資料結構與演算法170 排序 冒泡 插入

2021-09-06 07:34:48 字數 1109 閱讀 5306

如何分析乙個排序演算法?

氣泡排序的實現與分析

插入排序的實現與分析

前兩個都很容易理解,最後簡單說下穩定性:假如有一串數字(1,3,5,7,9,5,2)排序後(1,2,3,5,5,7,9)如果5這個數字排序後和排序前前後順序一樣就是穩定的,反之不是穩定的。

那麼穩定性有什麼好處呢?比如乙個雙十一的訂單,我們需要根據訂單額進行排序,訂單額相同的再根據下單時間排序。我們能輕易想到的就是先根據訂單額排序,然後有訂單額相同的我們再根據下單時間排序。這樣是能實現的,但是要排序無數次。

如果我們用穩定性演算法排序就只需要排序2次。具體實現是,先通過時間排序一次,排序完後再根據訂單額排序,這樣的結果就是需要的結果。時間排序完後,再根據訂單額排序,因為前後順序是不會變的,所以再根據訂單額排序,實際上已經有時間排序咯。

氣泡排序是比較相鄰的兩個數,如果滿足條件就交換位置,一次氣泡排序會完成乙個數字到達指定的位置,重複n次完成排序。

氣泡排序是可以優化的,如果一次氣泡排序中,沒有一次資料交換說明排序已經完成,可以提前退出。

分析:

時間複雜:o(n^2)

空間複雜:o(1)

穩定排序:排序前後位置不變,穩定。

插入排序就是乙個已排區和乙個未排區,初始一般是數字第乙個,然後在未排區中取出乙個放到已排區中的合適位置中。重複完成所有未排區的排序。

分析:

時間複雜:o(n^2)

空間複雜:o(1)

穩定排序:排序前後位置不變,穩定。

資料結構與演算法(九)排序

演算法 時間複雜度 平均 時間複雜度 最壞 時間複雜度 最好 空間複雜度 穩定性氣泡排序 o n 2 o n 2 o n o 1 穩定選擇排序 o n 2 o n 2 o n 2 o 1 不穩定插入排序 o n 2 o n 2 o n o 1 穩定希爾排序 o nlogn o n 2 o n o 1...

資料結構與演算法 四 排序

def heap sort li def heapfly li start len li 2 1 獲取最後乙個葉子節點的父節點 for nod in range start,1,1 left 2 nod 1 right min left 1,len li 1 temp left if li left...

資料結構《一》 排序演算法之氣泡排序

氣泡排序可以說是最簡單,大多數人最先接觸的排序演算法。臨近的數字兩兩進行比較,按照規定的順序進行交換,這樣一趟過去後,最大或最小的數字就像氣泡一樣被 排 最後一位,然後第二趟之後,次大或次小的數字被 排 到倒數第二位,以此類推,直至第一位與第二位順序正確。實現過程如圖 氣泡排序複雜度為o n 過程如...