排序演算法相關的時間複雜度和程序穩定性 下

2021-10-24 15:32:12 字數 1303 閱讀 6904

一、選擇排序

構建有序區域(器皿)和無序區域(器皿),資料序列組中涉及的所有資料開始時預設全部儲存在無序區域內(開始時預設有序區域記憶體中不存在任何資料),然後每輪動作都是從無序區域剩餘的資料中選擇出乙個極致的元素(公升序:選擇最小的元素/降序:選擇最大的元素)直接補充到有序區域的後面,直到最後整個資料序列組中涉及的所有資料元素全部進入有序區域。

二、堆排序

堆 排序演算法流程**

堆(二叉樹式)插入:每次插入動作都是將新資料元素放在已有序的二叉樹分支資料序列組最後,從這個新資料元素的上級父結點處到根結點處所在分支必定是乙個有序的數列分支,將這個新資料元素插入到這個有序數列分支中即完成插入階段動作。

堆(二叉樹式)刪除:插入動作完成後將最後乙個資料元素的內容值賦給根結點器皿,然後再從根結點器皿處開始進行一次從上向下的有序化調整。調整時先在左右兒子結點中找最小的,如果父結點比這個最小的子結點還**明不需要調整了,反之將父結點和其子節點交換後再進一步考慮後面的結點。相當於從根結點處開始將乙個資料元素在有序數列中進行「下沉」。因此,堆的插入和刪除非常類似直接插入排序,只不過是在二叉樹上進行插入過程。所以可以將堆排序形容為「樹上插」。

三、歸併排序(遞迴實現)

邏輯難度較低+ 多輪耗時 == 邏輯難度較高耗時少

低門檻時效性低/高門檻時效性高

不考慮耗時長短只追求問題的解決:採用邏輯難度較低+ 多輪耗時機制,將本身複雜的問題需求進行分割,分割成一系列更加簡單的簡單問題簡單需求單元,對簡單問題簡單需求單元逐個的解決處理分析,待所有的簡單問題簡單需求單元都被解決之後各自產生相應的簡單效果結果值,對全部的簡單效果簡單結果值進行累加也就是把已經被解決的簡單問題簡單需求單元進行合併組合累積,最終完成整個複雜問題的研究處理解決。

遞迴合併排序:分割資料序列組(divide),不斷的把資料序列組分割為二,不斷實施分割然後一直分到每個小部分的小資料序列組最多只有兩個資料元素的小資料序列;合併資料序列組(merge),不斷的合併兩個已經內部有序的子串行,整體基本有序直至所有數字全部有序。

四、基數排序(桶排序)

個十百千萬十萬。。。。。。(基數地位逐漸公升高端別作用增大)

基數排序:首先根據數字元素內容的個位分配到某個桶器皿裡面,在桶器皿內部進行內部參照各位自排序,然後將數字元素再輸出(串起來);然後根據十位基數進行再次分桶,繼續桶內參照十位自動排序,再將數字元素再輸出串起來。直至所有位基數被比較完,所有數字已經有序。

演算法相關的複雜度

衡量乙個演算法的好壞一般由兩個維度來表示。時間複雜度和空間複雜度。時間複雜度 表示演算法的執行時間,t n o f n 空間複雜度 表示演算法的暫用記憶體空間,s n o 1 時間複雜度 首先要說的這裡的執行時間並不是指計算程式具體執行的時間,而是演算法執行語句的次數。for i 1 i n i 忽...

排序演算法 時間複雜度和空間複雜度

常數階o 1 無論 執行了多少行,只要沒有迴圈複雜結構,那麼這個的時間複雜度就是o 1 o 1 時間複雜度 沒有迴圈結構的順序執行,無論執行多少行,時間複雜度均為o 1 public static voido1 對數階o log2n o log2n 時間複雜度 此處 i 以二倍的速度增長,也就是說到...

排序演算法的 時間複雜度 和 空間複雜度

常用的排序演算法的時間複雜度和空間複雜度 排序法 最差時間分析 平均時間複雜度 穩定度 空間複雜度 氣泡排序 o n2 o n2 穩定 o 1 快速排序 o n2 o n log2n 不穩定 o log2n o n 選擇排序 o n2 o n2 穩定 o 1 二叉樹排序 o n2 o n log2n...