非線性時間比較類排序:通過比較來決定元素間的相對次序,由於其時間複雜度不能突破o(nlogn),因此稱為非線性時間比較類排序。
線性時間非比較類排序:不通過比較來決定元素間的相對次序,它可以突破基於比較排序的時間下界,以線性時間執行,因此稱為線性時間非比較類排序。
比較排序,時間複雜度o(nlogn) ~ o(n^2),主要有:氣泡排序,選擇排序,插入排序,歸併排序,堆排序,快速排序等。
非比較排序,時間複雜度可以達到o(n),主要有:計數排序,基數排序,桶排序等。
穩定:如果a原本在b前面,而a=b,排序之後a仍然在b的前面。
不穩定:如果a原本在b的前面,而a=b,排序之後 a 可能會出現在 b 的後面。
時間複雜度:評估執行程式所需的時間。可以估算出程式對處理器的使用程度。 對排序資料的總的操作次數。反映當n變化時,操作次數呈現什麼規律。
空間複雜度:評估執行程式所需的儲存空間。可以估算出程式對計算機記憶體的使用程度。是指演算法在計算機內執行時所需儲存空間的度量,它也是資料規模n的函式。
經典排序演算法及python實現
假如,有乙個無須序列a 選擇排序的過程應該如下 第一趟 選擇最小的元素,然後將其放置在陣列的第乙個位置a 0 將a 0 6和a 2 1進行交換,此時a 第二趟 由於a 0 位置上已經是最小的元素了,所以這次從a 1 開始,在剩下的序列裡再選擇乙個最小的元素將其與a 1 進行交換。即這趟選擇過程找到了...
外排序演算法及相關場景
外排序演算法的核心思路在於把檔案分塊讀到記憶體,在記憶體中對每塊檔案依次進行排序,最後合併排序後的各塊資料,依次按順序寫回檔案。外排序需要進行多次磁碟讀寫,因此執行效率往往低於內排序,時間主要花費於磁碟讀寫上。我們給出外排序的演算法步驟如下 假設檔案需要分成k塊讀入,需要從小到大進行排序。1 依次讀...
經典排序演算法的總結及Python實現
排序的穩定性和複雜度 不穩定 選擇排序 selection sort o n2 快速排序 quicksort o nlogn 平均時間,o n2 最壞情況 對於大的 亂序串列一般認為是最快的已知排序 希爾排序 shell sort o nlogn 穩定 插入排序 insertion sort o n...