这是我用于计算排序算法的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();
}
答案 0 :(得分:4)
for(j = n; j >= 1; j--)
{
// You are accessing A[j]
}
因此A[15]
是无效访问,会导致未定义的行为。
数组A[15]
的有效访问权限是A[0]
到A[14]
除此之外的任何内容都是数组超出限制的访问权限。