演算法篇 十大經典排序演算法之計數排序

2021-10-10 20:08:41 字數 1281 閱讀 1765

計數排序是乙個非基於比較的排序演算法,該演算法於2023年由 harold h. seward 提出。它的優勢在於在對一定範圍內的整數排序時,它的複雜度為ο(n+k)(其中k是整數的範圍),快於任何比較排序演算法。 [1] 當然這是一種犧牲空間換取時間的做法,而且當o(k)>o(nlog(n))的時候其效率反而不如基於比較的排序(基於比較的排序的時間複雜度在理論上的下限是o(nlog(n)), 如歸併排序,堆排序)

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-kyowncla-1606270269119)(www.runoob.com/wp-content/uploads/2019/03/countingsort.gif)]

public

class

test

;print

("原陣列: "

, arr)

;sort

(arr)

;print

("排序後的陣列: "

, arr);}

public

static

int[

]sort

(int

arr)

private

static

int[

]countingsort

(int

arr,

int maxvalue)

int sortedindex =0;

for(

int j =

0; j < bucketlen; j++)}

return arr;

}private

static

intgetmaxvalue

(int

arr)

}return maxvalue;

}private

static

void

print

(string str,

int[

] arr)

else

if(i == arr.length -1)

else

} system.out.

println()

;}}

先找出整個需要排序的資料集中的最大值,然後構建乙個以最大值為長度的陣列,利用該陣列,記錄整個需要排序的資料集中的資料出現的次數,完成之後,利用記錄陣列的下標來完成排序

o(n+k)

優點:簡單、高效

缺點:存在空間浪費

適合於資料量比較小,而且需要時整數集的資料

十大經典排序演算法

載自 排序演算法是 資料結構與演算法 中最基本的演算法之一。排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序演算法有 插入排序 希爾排序 選擇排序 氣泡排序 歸併排序 快速排...

十大經典排序演算法

不穩定排序種類為4種 快速排序 核心思想是partition操作 二分法分而治之 平均時間複雜度nlogn 希爾排序 高階版的插入排序,先把間隔較遠的子串行排序,最後間隔為1時,等同於插入排序 插入排序在序列有序時,時間複雜度常數級,所以先讓子串行總體有序,能有效降低時間複雜度 平均時間複雜度n 1...

十大經典排序演算法

常見經典排序 非線性時間比較類排序 通過比較來決定元素間的相對次序,由於其時間複雜度不能突破o nlogn 因此稱為非線性時間比較類排序。線性時間非比較類排序 不通過比較來決定元素間的相對次序,它可以突破基於比較排序的時間下界,以線性時間執行,因此稱為線性時間非比較類排序。時間複雜度 空間複雜度 穩...