資料結構中的排序

2021-07-05 09:31:29 字數 1247 閱讀 1504

排序就是將乙個元素的任意序列重排成乙個按關鍵字有序的序列。

如果使用某一排序演算法排序後,ri和rj的相對位置並未發生變化,則稱這個排序演算法是穩定的。否則就稱這個演算法是不穩定的。

內部排序:在排序期間,元素全部存放在記憶體中的排序;

外部排序:在排序期間元素無法全部同時存放在記憶體中,必須在排序的過程中根據要求不斷的在內外存之間移動的排序。

插入排序:每一次將乙個待排序的記錄,按其關鍵字的大小插入到前面已經排好序的子串行中的合適位置上,知道全部記錄插入完成。

直接插入排序:從後往前一直插入到已經排好序的位置。

時間複雜度:o(n2).                  空間複雜度:o(1)        穩定的     既適用於順序儲存的線性表,也適用於鏈式儲存的線性表。

折半插入排序:確定當前記錄在前面有序子陣列中的位置時,直接插入排序是採用順序查詢法,而折半插入則採用折半查詢法,所以他適用於順序查詢的線性表

時間複雜度:o(n2)      穩定的排序方法

僅適用於順序儲存的線性表。

希爾排序:基本思想:首先取乙個小於n的步長di,把表中全部記錄分成d1的組,所有距離為d1的記錄放在同一組中,在各組中進行直接插入排序,然後取第二個步長d2

空間複雜度: o(1)    時間複雜度: o(n1.3)      不穩定的排序演算法

氣泡排序:基本思想:設待排序的表長為n,從後往前兩兩比較元素,若逆序則交換他們,則一次排序之後得到了最小的元素在最上層,下一次氣泡排序的時候,最小的那個元素就不進行比較了。剩下的進行下一次的冒泡。

空間複雜度: o(1)   時間複雜度: o(n2)       穩定的排序演算法

快速排序:基本思想:在氣泡排序的基礎上改進而來。基於分治的思想。

在表中取某一元素為基準元素,將陣列劃分成兩個子陣列,使得前乙個陣列的元素都小於基準元素,後面的都大於基準元素,所以基準元素是放在了其應該在的位置,然後對左右兩邊的陣列進行遞迴,從而完成整個排序。

是一種不穩定的排序演算法。

選擇排序:

簡單的選擇排序:將最小的元素找出來放在最前面,在剩下的元素中繼續找出最小元素放在第二個位置,以此類推,每次選出乙個元素,即可以確定其在有序序列中的最終位置。

時間複雜度: o(n2),空間複雜度:o(1)     是一種不穩定的排序方法。

堆排序:

利用二叉樹

資料結構中的排序

在論壇上看到的 幫助理解就好 這個東西很好記得 關於內部排序的演算法的時間複雜度,空間複雜度,穩定性的記憶方法,原創哈 王道論壇上看到 1 時間複雜度 以n nlogn 的速度快希歸堆,但是太快也不好,最壞達到o n 2 這樣就記住了4個!冒泡冒的好是o n 冒得不好就是o n 2 直接插入插得好,...

資料結構中的排序演算法

排序分為記憶體排序和外部排序,內部排序在記憶體中進行,外部排序因資料量較大,在外存中進行。一般我們常說的八大排序為內部排序。複雜度為o nlog2n 的排序演算法 快速排序 堆排序和歸併排序。1.1 演算法思想 每趟將乙個待排序的元素作為關鍵字,按照其關鍵字值的大小插入到已經排好的部分序列的適當位置...

資料結構中的排序演算法

參考自 大話資料結構 氣泡排序的基本思想是 兩兩比較相鄰記錄的關鍵字,如果反序則交換。注釋 n是陣列的長度,0,i 1 之間已經排好序,第乙個for迴圈是對當前的第i位排序,第二個for迴圈對 i,n 1 之間的相鄰的數進行排序,相鄰的逐一進行比較,使得小的逐漸向上交換 void bubblesor...