现在的位置: 首页 > 综合 > 正文

排序算法系列十(计数排序)

2013年04月07日 ⁄ 综合 ⁄ 共 339字 ⁄ 字号 评论关闭

void CountSort(int a[],int n) //设这时a[0..n-1]放的是1..max之间的数 均是正整数

{

    int count[n]={0}; 

    for(int i=1;i<=max;i++)

       count[a[i]]++;

    for(int i=1;i<=max;i++)

     for(int j=0;j<count[i];j++)

       printf("%d ",i);

基本思想 就是把输入的数对应到数轴上 因为数轴本身是有序的 所以这样做了后 再顺着最左边即最小数一直

检查 如有标记(count[i]大于0) 则输出这count[i]个i 如此下去 最终得到一个已排好序的数列了~~基数排序时间效率

是O(n)的 可惜对数据特殊性依赖性太强 因而应用场合较有限

 

抱歉!评论已关闭.