//鴿巢排序
//適用條件:所有取值的範圍確定,並且在這個範圍內個元素的出現頻率較高。
//算法描述:爲取值範圍內的各個可能取到的元素建巢用一維數組表示,巢中
// 巢中存放該元素出現的個數(通過遍歷待排序數統計存入)。按照巢的
// 順序和巢中元素個數列出該有序序列。
//算法空間複雜度爲:S(1)時間複雜度爲:O(n)。
//例:20個非負數,其中每個數的取值範圍爲1~9。
#include<iostream>
#include<time.h>
using namespace std;
int myrand(int* src, int n) //隨機函數,隨機生成n個 0~9的數存入src數組中
{
if(NULL == src||n < 0)
{
cout << "err in args or 'n'" << endl;
return 0;
}
else
{
srand(time(NULL));
for(int i=0; i<n; i++)
{
src[i] = rand()%10;
}
return 1;
}
}
void prin(const int* src, int n) //輸出數組中的前n個元素
{
for(int i=0; i<n; i++)
cout << src[i] << " ";
cout << endl;
}
void home_sort(int arg[], int ar, int ser[], int se) //排序函數
{
int i,j,t =0;
for(i=0; i<ar; i++)
++ser[arg[i]];
for(i=0; i<se; i++)
{
for(j=0; j<ser[i]; j++)
{
arg[t] = i;
++t;
}
}
}
int main()
{
int arg[20],se[10] = {0};
if(myrand(arg,20))
prin(arg,20);
home_sort(arg, 20, se, 10);
prin(arg, 20);
return 0;
}
鴿巢排序算法描述和代碼舉例
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Elasticsearch 評分排序
王清培
2019-02-24 10:58:01
八大排序算法
lauterrance
2019-02-23 13:13:58
python初學—-實現excel裏面讀數據進行排序
songzaihua
2019-02-23 00:39:16
各種排序算法
947154267yjn
2019-02-23 00:37:25
數組高級部分--排序,查找
淺0夢0
2019-02-23 00:20:35
js數組去重五種方法
半指溫柔樂
2019-02-22 23:41:02
對文件中出現的單詞排序次數
神蹟難覓
2019-02-22 23:33:27
python 冒泡排序
雲上鋼琴師
2019-02-22 23:05:06
python筆記3:依次輸入3個數排序打印(升序)
知行知行
2019-02-22 22:58:25
算法的時間複雜度分析
mynamewei
2019-02-22 23:02:11