-2

我的任务是在 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];
4

1 回答 1

2

有几个问题,所以我会给你一些提示:

  • 第二个循环是错误的。提示:包含多少元素T

  • 第三个循环没有错,但没有必要。我个人发现没有这个循环更容易考虑算法(你可能不同意)。

  • 最后的循环是错误的。0您想通过k-1填充来迭代值Tp。循环甚至不应该引用T.

于 2013-04-12T05:35:20.267 回答