我的任务是在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];
最佳答案
有一些问题,所以我给您一些提示:
第二个循环是错误的。提示:T
包含多少个元素?
第三个循环没有错,但是没有必要。我个人发现没有此循环就更容易考虑算法(您可能会不同意)。
最后的循环是错误的。您要遍历0
到k-1
的值,并填充Tp
。该循环甚至不应引用T
。