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

09-20 05:45