1. 程式人生 > 實用技巧 >排序演算法相關的時間複雜度和程序穩定性,快排的原理

排序演算法相關的時間複雜度和程序穩定性,快排的原理

排序圖表:
在這裡插入圖片描述
有序的變化是向量變化(向量變化存在正負):(內部有序的部分+某個增量元素(同趨勢))整體為具有同樣有序趨勢的新的有序部分。
一、插入排序(逐個插入)(基底空容器)
每次將某個待排序的資料,跟前面已經有序的序列數字一一比較找到自己合適的位置,插入到序列中,直到全部資料插入完成。
二、希爾排序(跳躍式插入)(基底空容器)
先將整個待排序的元素序列分割成若干個小規模子序列組(由相隔某個“增量”元素組成),在單個的小規模子序列組內分別進行直接插入排序,然後依次縮減分界增量元素再進行下一輪排序輪迴,待整個待排序的元素序列中的全部元素基本上有序(分界增量元素數目足夠少)時,再對全體元素進行一次最後的直接插入排序。由於希爾排序是對相隔了若干距離的小部分資料進行內部直接插入式排序,因此形象的稱希爾排序為“跳著插”

三、氣泡排序(基底充滿元素的容器)
氣泡排序:小資料上冒(升序)/大資料上冒(降序)
對兩個相鄰的資料進行比較並採取小資料上冒(升序)(前位置)/大資料上冒(降序)(前位置)。小資料上冒每次遍歷後最小的資料浮在當前序列最上面/大資料上冒每次遍歷後最大的資料浮在當前序列最上面,重複N輪遍歷後即可以使陣列序列有序。

氣泡排序改進1:在某次遍歷中如果沒有資料交換,說明整個陣列已經有序。因此通過設定標誌位來記錄此次遍歷有無資料交換就可以判斷是否要繼續迴圈。

氣泡排序改進2:記錄某次遍歷時最後發生資料交換的位置,這個位置之後的資料顯然已經有序了。因此通過記錄最後發生資料交換的位置就可以確定下次迴圈的範圍了。

四、下沉排序(基底充滿元素的容器)
下沉排序:小資料下沉(降序)/大資料下沉(升序)
對兩個相鄰的資料進行比較並採取小資料下沉(降序)(後位置)/大資料下沉(升序)(後位置)。小資料下沉每次遍歷後最小的資料沉到當前序列最下面/大資料下沉每次遍歷後最大的資料沉到當前序列最下面,重複N輪遍歷後即可以使陣列序列有序。