1. 程式人生 > 其它 >簡單桶排序

簡單桶排序

技術標籤:演算法c語言

2020年即將過去,2021年即將到來。讓我們總結過去並且憧憬2021;
希望大家在2021年理論與實際相結合;

以下是簡單桶排序程式碼
題目:滿分十分有五個同學依次考5分,9分,1分,6分,5分,7分。把以上同學按照非遞減排序(使用簡單同排序)
1、申請處理資料上限數字的桶數(對應下面程式中n);
2、對申請的桶清空(重置為0)用於計數;
3、使處理資料的桶下標加1即可;
4、按照要求輸出桶中存放的次數並且按照順序:(輸出的是桶下標)

#include<stdio.h>
int main()
{
	int a[11];//0分到10分總共十一分桶
	int n,i,
x,j; printf("請輸入需要排序數字個數:"); for(i=0;i<11;i++) a[i]=0;//將桶中清空,全部重置為0計數; scanf("%d",&n);//輸入有幾個同學需要排序; for(i=0;i<n;i++) { scanf("%d",&x);//輸入分數 a[x]++;//讓分數對應的桶下標自加1; } for(i=0;i<11;i++) for(j=0;j<a[i];j++) printf("%5d",i);//按照從小到大順序輸出桶下標,注意格式控制;
return 0; }

執行結果如下
在這裡插入圖片描述
以上就是簡單桶排序的實現過程;
註明:這是最簡化版的桶排序,其實本質來說以上程式碼只是簡單統計輸出基本沒有演算法的本質;
缺點:你測試資料上限越大需要申請更多的桶也就對應更大的記憶體;
優點:需要處理大量資料下時間複雜度小;
有什麼不足大家可以在評論區指出,你們的意見就是我需要學習的