我的任务是在C中进行计数排序算法。编译器没有任何理由不编写程序,但它不起作用。虽然调试调试器显示第二个for
包含错误,所以我问的是错误在哪里,因为我看不到它。
const int k = 77;
const int n = 1000;
int T[n];
int Tp[n];
int TPom[k];
int i;
for(i = 0 ; i < k ; i++)
TPom[i] = 0;
for(i = 0 ; i < k ; i++)
TPom[T[i]]= TPom[T[i]]+1;
for(i = 1 ; i < k ; ++i)
TPom[i] += TPom[i-1];
for(i = n-1 ; i >= 0 ; --i)
Tp[--TPom[T[i]]] = T[i];
答案 0 :(得分:2)
有一些问题,所以我会给你一些提示:
第二个循环错误。提示:T
包含多少个元素?
第三个循环没错,但是没必要。我个人觉得更容易思考算法没有这个循环(你可能不同意)。
最后一个循环是错误的。您希望迭代值0
到k-1
,填充Tp
。该循环甚至不应引用T
。