快排時間複雜度詳細解釋

2021-08-31 10:03:15 字數 534 閱讀 3505

1 快速排序遞迴版

def quick_sort(arr):

if len(arr)<2:

return arr ------------------這是基線條件

else:

a = arr[0]

smaller = [i for i in arr[1:] if i < a]

bigger = [i for i in arr[1:] if i > a]

return quick_sort(smalller) + [a] + quick_sort(bigger)

2 快排在最糟糕得情況下時間複雜度是o(n²),平均的複雜度是o(nlogn),

這裡的n和logn, 分別代表了呼叫棧的高度,和完成每層的時間,在a取

陣列的第一項時候,是最糟的情況,完成每層需要的時間是n,棧的高

讀是n,時間複雜度就是n²,當取中間的值得時候,完成每層的時間是

n,但是呼叫棧的高度變成了logn,所以這個時候時間複雜度是nlogn

3 選擇排序的時間複雜度是o(n²)

複雜度的詳細解釋

因為工作的原因,重新拾起了資料結構,畢竟它的地位對於一名程式設計師來說舉足輕重,對於即將畢業的自己,也是決定把所有模糊的定義弄明白,為以後打好基礎。所以寫下人生中第一篇原創部落格,作為紀念。複雜度分為兩種,1 時間複雜度 2 空間複雜度 一.演算法時間複雜度 1.定義 在進行演算法分析時,語句總的執...

top k快排複雜度討論

面試的時候,被問到top k問題,以為回答維護乙個k大小的最小堆就沒事了。被面試官引導去思考其他方法,發現居然有快排來搞一搞的邪門方法,但是並沒有證明出複雜度為ko n ko n ko n k kk為常數 查了像網上的,都是些奇怪的o n o n 2 o n 4 2n o n o n 2 o n 4...

鍊錶快排和時間複雜度分析

前端時間去面試,碰到問題,快排的鍊錶實現和時間複雜度分析,非常基礎,但是當時完全沒想到社招面試會涉及到這麼基礎的東西,回答的非常不完美,現在總結,以致後人 節點定義 struct node 實現 node part node begin,node end q q next tmp p value p...