下面为自己编的计数排序算法实现:
#include <stdio.h>
#define LEN 10
void counting_sort(int A[],int B[],int k);
int main()
{
int A[6]={0,4,3,1,1,3};
int B[LEN]={0};
counting_sort(A,B,4);
for(int i=0;i <LEN;i++)
printf("%d",B[i]);
printf("\n");
return 0;
}
void counting_sort(int A[],int B[],int k)
{
int C[LEN]={0};
for(int i=0;i <=k;i++)
C[i]=0;
for(int j=0;j <LEN;j++)
C[A[j]]=C[A[j]]+1;
for(int i=1;i <=k;i++)
C[i]=C[i]+C[i-1];
for(int j=LEN-1;j>=0;j--)
{
B[C[A[j]]]=A[j];
C[A[j]]=C[A[j]]-1;
}
}
执行出错,说**指令引用**内存,该内存不能为read.请问我的问题在哪里?
==
我帮你看看
以后发c的问题,到c/c++版
C[A[j]]=C[A[j]]+1; 这样的用法有问题
C/C++ code:
#include <stdio.h>
#define LEN 10
void counting_sort(int A[],int B[],int k);
int main()
{
int A[6]={0,4,3,1,1,3};
int B[LEN]={0};
counting_sort(A,B,4);
for(int i=0;i <LEN;i++)
printf("%d",B[i]);
printf("\n");
return 0;
}
void counting_sort(int A[],int B[],int k)
{
int C[LEN]={0};
for(int