基數排序和桶排序

2021-09-05 11:52:46 字數 538 閱讀 5853

基數排序是針對特定場景做出的排序方法

特定場景具體指的是:待排序的序列每個元素都是由一組有固定長度,且每個『字元』都是在一定數值範圍內。

說的有點繞,舉個栗子(目前也只知道這個場景):

一組有相同長度的字串需要進行排序,每個字串長度一定,每個字串的每乙個字元都是a-z 0-9,假設都是大寫。

這個時候就可以使用基數排序了,

基數排序的思想是:

從最後面乙個字元開始依次做計數(穩定)排序,直到最左面乙個字元為止,排序結束。

時間複雜度是o(n)

桶排序桶排序的使用也是有一定限制( 計數排序有點類似),待排序的序列需要在一定範圍內,且最好該序列元素是平均分布。

主要思想為:

把max-min+1做成n平均份,每份包含k個數,這樣min--->min+k就在第乙個桶,min+k--->min+2k在第二個桶,依次類推

對每個新放入桶中的元素都做插入排序,遍歷完所有元素,從第乙個桶開始依次輸出,即是有序的。

時間複雜度o(n)

時間複雜度的計算完全沒有看懂,就記住算了。

桶排序和基數排序

方法一 每個桶只放相同的數字 入桶過程 1 把正數和0存入正數桶,把負數存入負數桶 2 把陣列中的每項作為正數桶或負數桶的下標存入到對應的key裡 出桶過程 先遍歷正數桶或負數桶,因為桶裡每項都是陣列,在遍歷每項 function bucketsort array negativebucket ab...

基數排序(桶排序)

1。什麼是基數排序 radix sort 基數排序 屬於分配式排序 distribution sort 又稱 桶排序 bucket sort 它是通過鍵值的各個位的值,將要排序的元素分配至某些 桶 中,達到排序的作用。2.它和歸併一樣,屬於穩定型演算法。public void radixsort i...

基數排序(桶排序)

思想 先把這組資料的個位排有序,再把十位排有序,再排百位 千位 include include include include void showarr int arr,int len printf n int getmaxnumfin int arr,int len 找陣列中最大數,並求出最大數的...