排序算法之桶式排序

来源:互联网 发布:linux chmod怎么 编辑:程序博客网 时间:2024/04/28 17:23

任何只是用比较的一般/通用排序算法,最坏时间复杂度都大于等于NlogN
但是,在某些特殊条件限制下,以线性时间排序仍然是可能的
桶式排序,数据必须只有小于M的正整数组成。最坏时间复杂度N+M

算法描述:
//使用一个大小为M的count数组(count有M个桶),初始化为0;
//扫描一遍待排序序列,当读pData[i]时,将count[pData[i]]加一;
//扫描数组count,打印出排序后的表。

由于比较简单,这里只给出C++实现,不在给出Python实现

void BucketSort(int *pData,int N)   //假设pData元素为小于100的正整数{int count[100],i;memset(count,0,sizeof(count));for(i=0;i<N;i++){count[pData[i]]++;}int j = 0;for(i=0;i<100;i++){while(count[i]!=0){pData[j++] = i;count[i]--;}}}


0 0
原创粉丝点击