桶排序是迄今為止最快的一種排序,其時間複雜度僅為ο(n),也就是線性複雜度。
其主要思想在於:建立有序的桶, 遍歷待排序元素,在遍歷此元素的同時,將其對映到對應的桶中。這樣,遍歷一遍, 所有的元素就在桶中有了對映。 而桶是有序的, 再從有序的桶中,將資料重新置於陣列中 , 這樣就完成了排序。
1. 最簡單的桶排序演算法
示例:
待排數字[6 2 4 1 5 9],
準備10個空桶,最大數個空桶
1, 順序從待排陣列中取出數字,首先6被取出,然後把6入6號桶
這個過程類似這樣:空桶[ 待排陣列[ 0 ] ] =
待排陣列[ 0 ]
[6 2 4 1 5 9] 待排陣列
[0 0 0 0 0 0 6 0 0 0] 空桶
[0 1 2 3 4 5 6 7 8 9] 桶編號(實際不存在)
2, 順序從待排陣列中取出下乙個數字,此時2被取出,將其放入2號桶,是幾就放幾號桶
[6 2 4 1 5 9] 待排陣列
[0 0 2 0 0 0 6 0 0 0] 空桶
演算法入門(一)排序之桶排序
當我們需要對一組資料 無序 進行排序時,假設期末考試完了,老師要按照分數對大家的名次進行排序,這裡假設五個同學分別考了 5分 3分 5分 2分 8分 滿分十分 當然,我們一下子就看出了其中的奧妙,但是我們用程式該怎麼寫呢?我們可以建立乙個大小為11的陣列 因為這裡統計的是0到10之間的數字出現次數 ...
9 排序演算法 桶排序
桶排序是計數排序的公升級版。它利用了函式的對映關係,高效與否的關鍵就在於這個對映函式的確定。為了使桶排序更加高效,我們需要做到這兩點 在額外空間充足的情況下,盡量增大桶的數量 使用的對映函式能夠將輸入的 n 個資料均勻的分配到 k 個桶中 同時,對於桶中元素的排序,選擇何種比較排序演算法對於效能的影...
ACM基礎(四) 排序之快速排序
二 c 實現 快速排序,也是分治法。意義 就是通過pivot將陣列分成兩部分,前面的一部分小於等於pivot,後面的一部分大於pivot。將倒數第一作為 軸 pivot 建立兩個哨i 開始再往前乙個 i 1表示大於pivot的元素 j 遍歷的 從開始到倒數第二 表示當前小於等於pivot的元素 遍歷...