非基於比較的排序 桶排序

2021-09-30 15:34:00 字數 685 閱讀 4487

我們最常用的快速排序和堆排序等演算法需要對序列中的資料進行比較,因為被稱為基於比較的排序。

而非基於比較的排序有計數排序,桶排序,和在此基礎上的基數排序。要注意的是,非基於比較的排序演算法的使用都是有條件限制的,例如元素的大小限制。

假設待排序資料是乙個隨機過程產生,該過程將元素一致地分布在某區間上。

桶排序的思想就是把區間劃分成n個相同大小的子區間,或稱桶,然後將輸入數分布到各個桶中去。因為輸入數均勻分布,所以一般不會有很多數落在乙個桶中的情況。為得到結果,先對各個桶中的數進行排序,然後按次序把各桶中的元素列出來即可。

舉個例子:一年的全國高考考生人數為500萬,分數使用標準分,最低100,最高900,沒有小數,你把這500萬元素的陣列排個序。一共可出現的分數可能有多少種呢?一共有900-100+1=801,建立801個「桶」,從頭到尾遍歷一次陣列,對不同的分數給不同的「桶」加料.

比如有個考生考了500分,那麼就給500分的那個桶(下標為500-100)加1,完成後遍歷一下這個桶陣列,按照桶值,填充原陣列,100分的有1000人,於是從0填到999,都填1000,101分的有1200人,於是從1000到2119,都填入101.於是經過這次遍歷之後所有記錄都是有序的了。

public static void bucketsort(int keys,int max)

}

演算法 排序 非基於比較的排序

非基於比較的排序與樣本的資料狀況有很大的關係,由於這個限制使其在工程中並不常用。非基於比較的排序有桶排序,基數排序,計數排序。這三者都能做到排序的穩定性,時間複雜度為 o n 空間複雜度為 o n 假設存在一組資料,裡面的資料只有 0 60 使用非基於比較的排序。思路 此時可以使用計數排序,準備 6...

非比較排序 桶排序

相對於計數排序,桶排序和計數排序的差別就在於處理相同資料的差別上。計數排序假設輸入資料都屬於乙個小區間內的整數,而桶排序則是假設輸入是由乙個隨時過程產生的,該過程將元素均勻分布在 0,1 區間上。在桶排序的過程中有乙個非常重要的地方就是,投射的位置 current data number array...

非遞減,桶排序

做非遞減的最小移動個數 輸入 heights 1,1,4,2,1,3 輸出 3 解釋 當前陣列 1,1,4,2,1,3 目標陣列 1,1,1,2,3,4 在下標 2 處 從 0 開始計數 出現 4 vs 1 所以我們必須移動。在下標 4 處 從 0 開始計數 出現 1 vs 3 所以我們必須移動。在...