C ++代码未按预期运行

时间:2015-03-17 16:12:23

标签: c++

这是我用于计算排序算法的C ++代码,没有错误也没有警告但是当我想执行它时它会给我" Counting.exe已停止工作"我认为这是一个运行时错误。

void Counting_sort()
{
    int A[]={5,15,20,30,40,8,36,25,96,15,40,15,96,47,20};
    int k = 15 ; 
    int n = 15;
    int i, j;
    int B[15];
    int C[100];
    for(i = 0; i <= k; i++)
        C[i] = 0;
    for(j =1; j <= n; j++)
        C[A[j]] = C[A[j]] + 1;
    for(i = 1; i <= k; i++)
        C[i] = C[i] + C[i-1];
    for(j = n; j >= 1; j--)
    {
        B[C[A[j]]] = A[j];
        C[A[j]] = C[A[j]] - 1;
    }
    cout << "\nThe Sorted array is : ";
    for(i = 1; i <= n; i++)
        cout << B[i] << " " ;
} 

void main()
{

    Counting_sort();
}

1 个答案:

答案 0 :(得分:4)

for(j = n; j >= 1; j--)
{
  // You are accessing A[j]
}

因此A[15]是无效访问,会导致未定义的行为。 数组A[15]的有效访问权限是A[0]A[14]除此之外的任何内容都是数组超出限制的访问权限。