關於排序的總結

2021-06-17 23:46:00 字數 1125 閱讀 9401

在資料結構中講了一些基本的排序方法,在此做乙個總結。

1 插入排序

這種排序是每一趟都在找某個帶插入元素的位置,找到之後插入到待插入的點。

(1)直接插入排序

這種方法是從陣列的第乙個元素依次到最後乙個元素,當當前為第i個元素時,和前面的元素逐個相比較,以找到其在前面i-1個元素當總的位置然後插入。

演算法分析:這種排序演算法在最好的情況(即排序前順序)時,比較的次數為n-1,移動的次數為0;但是在逆序時,比較的次數為(n+2)(n+1)/2,元素移動的次數(n+4)(n-1)/2,因此其時間複雜度為o(n2)

(2)折半插入排序

為了克服直接插入元素在尋找插入位置時需要與已排好序的i-1個元素逐個比較,因此利用了折半查詢的方法來確定其插入位置。這中方法相對於直接插入排序,只是減少了其比較的次數,但是沒有減少其移動的次數,因此其時間複雜度也為o(n2)

(3)2-路插入排序

(4)表插入排序

這種插入排序在插入過程當中不需要移動元素,當最後確定每個元素的最終位置時,在一次性移動元素,從而減少了前面排序過程當中大量移動元素的缺點。這種演算法只是在比較的過程當中以改變元素的指標來代替移動,但是並沒有減少比較的次數,因此其時間複雜度也為o(n2)。

(5)希爾排序

2 快速排序

這種排序,每一趟完成之後,乙個元素都能找到其最終排序的位置,並放在這個位置上。

(1)起泡排序

每一趟排序完成時,最大/最小的元素都會在未排序元素表的最始端/末端。這種排序演算法最壞情況為的比較次數為n(n-2)/2,因此其時間複雜度為o(n2)。

(2)快速排序

快速排序每一趟完成時,乙個元素都會找到其最終的位置並放入其中。其時間複雜度為o(nlogn)。

3 選擇排序

這種排序每次都會選擇到乙個最大(或最小)的元素,然後將其依次放入陣列中。

(1)簡單選擇排序

即每次都選擇未排序的i——n個元素當中的最小元素。因此第i趟迴圈需進行的比較次數為n-i,因此其總的比較次數為n(n-1)/2,其時間負責度為o(n2)。

(2)堆排序

為了解決在簡單排序過程當中每次比較的無記憶功能,堆排序的思想為首先建立乙個大頂堆/小頂堆,這樣在每次比較之後就不需要再乙個乙個去比較了,而只需要重新調整堆即可。其時間複雜度也為o(nlogn)

關於排序的總結

概念 排序是按關鍵字的非遞減或非遞增順序對一組記錄重新進行排序的操作。主要目的是為了便於查詢。穩定性 假設起始狀態a b,且a在b的前面,經過排序之後如果a仍然在b之前,則這種排序是穩定的,否則稱為不穩定排序。不能說不穩定排序的方法不好,各有各的使用場景。分類 插入排序 直接插入排序 理解 從第二個...

自己關於排序的總結

所有排序的總結 1 插入排序 插入排序是最簡單最直觀的排序演算法了 它的依據是 遍歷到第 n個元素的時候前面的 n 1個元素已經是排序好的了 那麼就查詢前面的 n 1個元素把這第 n個元素放在合適的位置 如此下去直到遍歷完序列的元素為止.插入排序是最簡單最直觀的排序演算法了 它的依據是 遍歷到第 n...

關於快速排序的總結

快速排序其實是氣泡排序的公升級版,都具有交換排序的思想。快速排序通過一遍排序,將資料分為兩部分,一部分資料都比另外一部分資料小,然後再分別對這兩部分資料再進行此排序,直到排序結束。因此,此排序方法用到了遞迴。下面來舉個例子 對69 65 90 37 92 6 28 54 八個數進行排序 69 65 ...