總結了一些常見的排序演算法,面試必備啊

2021-05-22 13:09:17 字數 1080 閱讀 5251

名稱

複雜度

說明

備註

氣泡排序

bubble sort

o(n*n)

將待排序的元素看作是豎著排列的「氣泡」,較小的元素比較輕,從而要往上浮

插入排序

insertion sort

o(n*n)

逐一取出元素,在已經排序的元素序列中從後向前掃瞄,放到適當的位置

起初,已經排序的元素序列為空

選擇排序

o(n*n)

首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小元素,然後放到排序序列末尾。以此遞迴。

快速排序

quick sort

o(n *log2(n))

先選擇中間值,然後把比它小的放在左邊,大的放在右邊(具體的實現是從兩邊找,找到一對後交換)。然後對兩邊分別使用這個過程(遞迴)。

堆排序heap sort

o(n *log2(n))

利用堆(heaps)這種資料結構來構造的一種排序演算法。堆是乙個近似完全二叉樹結構,並同時滿足堆屬性:即子節點的鍵值或索引總是小於(或者大於)它的父節點。

近似完全二叉樹

希爾排序

shell

o(n1+

£)0<£<1

選擇乙個步長(step) ,然後按間隔為步長的單元進行排序.遞迴,步長逐漸變小,直至為1.

箱排序bin sort

o(n)

設定若干個箱子,把關鍵字等於 k 的記錄全都裝入到第k 個箱子裡 ( 分配 ) ,然後按序號依次將各非空的箱子首尾連線起來 ( 收集 ) 。

分配排序的一種:通過" 分配 " 和 " 收集 " 過程來實現排序。

桶排序bucket sort

o(n)

桶排序的思想是把 [0 , 1) 劃分為 n 個大小相同的子區間,每一子區間是乙個桶。

總結了一些常見的排序演算法,面試必備啊

原文 名稱 複雜度 說明 備註 氣泡排序 bubble sort o n n 將待排序的元素看作是豎著排列的 氣泡 較小的元素比較輕,從而要往上浮 插入排序 insertion sort o n n 逐一取出元素,在已經排序的元素序列中從後向前掃瞄,放到適當的位置 起初,已經排序的元素序列為空 選擇...

該做一些總結了

最近狀態不好,說這話有一些牽強,或者從沒有過好的狀態。但是感覺失去了一些東西。但是突然無法言明。不知道怎麼了,感覺自己好像變得越來越看不懂。我不知道我需要的是什麼,有些東西你去想了,但是自己感覺也就只是去想了。我對有些事情太妥協,太軟弱,結果是太無知。每做一件事情感覺自己是沿著心中的那條線往前走的,...

一些常見的排序演算法

為了便於說明,假設是公升序排列,降序容易以此推斷 1 選擇排序 查詢數列 含n個數 中的最大項並把它與最後一項交換,然後查詢數列前n 1項中的最大項,並把它與這n 1項的最後一項交換,以此類推。2 氣泡排序 比較相鄰的兩項資料,如果次序顛倒則交換之,最多需要比較n 1趟。第一趟結束,最大項已經到末尾...