计数排序算法在C中不起作用

时间:2013-04-12 05:29:39

标签: c arrays sorting counting

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

1 个答案:

答案 0 :(得分:2)

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

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

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

  • 最后一个循环是错误的。您希望迭代值0k-1,填充Tp。该循环甚至不应引用T