在《计算机程序设计与艺术》排序与查找部分中第一个算法就是计数排序,下面我写了一个c/c++版本,欢迎大家拍砖
- T* SortByCount(T arr[], int n)
- {
- T* count = new T[n];
- T* newArr = new T[n];
- int i,j,flag;
-
- for(i = 0; i < n; i++)
- count[i] = 0;
- //计数排序
- for(i = n-1; i > 0; i--)
- {
- for(j = i-1; j >= 0; j--)
- {
- if(arr[i] < arr[j])
- count[j]++;
- else
- count[i]++;
- }
- }
- //赋值返回
- for(i = 0; i < n; i++)
- {
- newArr[count[i]] = arr[i];
- }
- for(i = 0; i < n; i++)
- {
- arr[i] = newArr[i];
- }
- return arr;
- }