如何分析乙個排序演算法?
氣泡排序的實現與分析
插入排序的實現與分析
前兩個都很容易理解,最後簡單說下穩定性:假如有一串數字(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 過程如...