桶排序——C語言
阿新 • • 發佈:2018-12-11
桶排序是一種常見的排序方式。其主要是先確定一定大小的桶,再將陣列數值存入桶的對應下標中,最後對非空桶進行排查,將桶的數值賦給數值。
程式碼實現:
/**桶排序**/ void bucket(int *data)///隨機產生data陣列的值 { int t; int j=0; t=findmax(data)+1;///使t為陣列最大數值 int buketdata[t];///申請一個大小為陣列數值最大數的桶 for(int i=0;i<t;i++)///對桶進行初始化,使之都為0 buketdata[i]=0; for(int i=0;i<MAX;i++)///將陣列中的數放置進對應的桶中 buketdata[data[i]]++; for(int i=0;i<t;i++) { while(buketdata[i]!=0)///對非空桶進行排序 { data[j]=i;///將非空的桶的值傳給data陣列 j++; buketdata[i]--; } } for(int i=0;i<MAX;i++) printf("%d\t",data[i]); }
執行結果:
時間複雜度:O(n)