簡單的桶排序原理以及實現

2022-07-11 10:48:13 字數 762 閱讀 6514

今天學習的演算法,簡單桶排序。(這遠遠稱不上桶排序演算法)

所謂桶排序,就是將每個輸入的數放入它對應的桶中,最後再按照桶的順序從小到大或從大到小去逐一倒出來,這樣就實現桶排序了。

下面我舉個例子,我要排範圍0-10的15個數。

1 #include 2

3using

namespace

std;45

intmain()

6;//

對0到10之間的數進行排序

9 cout<<"

輸入15個範圍0-10的數進行排序:";

10for(int i=0; i<15; i++)

1115

16 cout<<"

排序後結果:";

17for(int i=10; i>=0; i--)

18for(int j=0; j)

19 cout20 }

因為我要排0-10的數,所以我需要桶的序號為0-10,即11個桶,所以我們要申請陣列大小為11,初始值全為0(排序前千萬別忘了要將桶清空!)。

任意輸入15個0-10的數,每次輸入乙個數,就將它放進它的序號對應的桶中。例如我輸入9,那麼就將它放入a[9]中,即a[9]++,如果我再輸入乙個9,那麼桶中9的數量就再加1。

當輸入完成後,從0號桶到10號桶每個桶中都有了數(當然如果你沒輸入某個數,它的桶就會一直保持數量為0),那麼我們現在可以從0到10(也可以從10到0)依次將桶中的數倒出(桶中有個倒幾個),這樣就完成排序啦。

桶排序的簡單實現

桶排序的思想有點像計數排序,又有點像快速排序,還用到一點hash的東西,值得仔細琢磨。具體做法如下,按照某種hash函式,將資料對映到不同的桶中,使用hash是因為我們要保證每個資料的對映過程應該在常數時間內完成。對映完成後,每個桶中的資料相比於其他桶都是有序的 也就是相鄰的桶有嚴格的順序 這個就有...

簡單桶排序

2020年即將過去,2021年即將到來。讓我們總結過去並且憧憬2021 希望大家在2021年理論與實際相結合 以下是簡單桶排序 題目 滿分十分有五個同學依次考5分,9分,1分,6分,5分,7分。把以上同學按照非遞減排序 使用簡單同排序 1 申請處理資料上限數字的桶數 對應下面程式中n 2 對申請的桶...

排序演算法原理以及實現

1.第乙個元素開始,假設第乙個元素已排序 2.取下乙個元素temp val,在已排序的區間從後往前掃瞄,如果大於temp val,則往後移 3.直到小於的時候,將其後一位置為temp val即可 4.重複n 1次2 3步驟 三個引數目的是為了,排序某個區間 void insertion sort v...