算法导论-计数排序-C语言
2014-09-11 16:25
253 查看
计数排序的思想就是对每一个输入的元素x,确定出小于x的个数,直接把x放入最终输出数组的位置上。
#include <stdio.h> #include <stdlib.h> #define MAX_INT 65535 #define NUM 16 void printArray(int array[], int length); void countingSort(int array[],int length,int maxValue); int main() { int array[NUM] = {23,12,3,4,2,3,234,5655,34,123,445,44,3,4,56,78}; int i ; countingSort(array,NUM,MAX_INT); printArray(array,NUM); return 0; }
void countingSort(int array[],int length,int maxValue) { int result[length]; int counting[maxValue]; int i = 0; for(i = 0;i < maxValue; ++i) { counting[i] = 0; } for(i = 0; i < length; ++i) { ++counting[array[i]]; } for(i = 1; i < maxValue; ++i) { counting[i] += counting[i - 1]; } for(i = 0;i < length; ++i) { result[counting[array[i]]] = array[i]; --counting[array[i]]; } for(i = 0; i < length;++i) { array[i] = result[i + 1]; } }
相关文章推荐
- 读《算法导论》我来C语言实现(1)——插入排序
- 计数排序(C语言实现)
- [置顶] 算法导论 之 平衡二叉树 - 打印 - 递归[C语言]
- 算法导论 之 堆排序[C语言]
- 算法导论 之 快速排序[C语言]
- 《算法导论》CLRS算法C++实现(五)P98 计数排序
- 【CLRS】《算法导论》读书笔记(三):计数排序(Counting sort)、基数排序(Radix sort)和桶排序(Bucket sort)
- 《算法导论》学习总结 — 8.第八章(2) 计数排序
- 计数排序-C语言实现
- 百炼-2792-集合加法-C语言-计数排序
- [置顶] 算法导论 之 B树 - 删除[C语言]
- 读《算法导论》我来C语言实现(2)——合并排序
- 算法导论-优先级队列-C语言
- [置顶] 算法导论 之 红黑树 - 打印、销毁 - 非递归[C语言]
- 读《算法导论》我来C语言实现(3)——堆排序和优先级队列
- 《算法导论》 上的计数排序
- 算法导论程序15-计数排序(Python)
- 计数排序(C语言版本)
- 算法导论学习笔记(一)排序算法之计数排序
- 《算法导论》中红黑树的C语言实现