大O記法與排序演算法

2021-08-30 10:48:25 字數 559 閱讀 8153

大o記號

常見演算法的時間複雜度如下圖所示:

排序演算法的核心就是:compare and swap,簡稱cas。

具體的排序演算法介紹見部落格:常用排序演算法總結(一)

堆排序演算法涉及到堆這種資料結構,詳細的介紹如下:**排序演算法(三)之堆排序

為什麼要介紹排序演算法?因為排序演算法是其它高效演算法的基礎:一堆資料只有排成順序,我們才方便對它們的增刪改查操作。

上面介紹的只是對陣列的排序演算法,那麼如果資料的儲存結構是鍊錶呢?

下面的部落格介紹了針對鍊錶的排序演算法,基本思想和陣列的排序演算法類似。

單鏈表排序

實現雙鏈表的排序

ps. 如果資料結構是二叉排序樹的話,直接對樹進行遍歷就會得到有序的資料。

常見的樹的種類及相關的操作有很多,下面是最常用的紅黑數的詳解:

sedgewick的紅黑樹

還有乙個關於資料結構與演算法的部落格:

資料結構與演算法學習筆記之 適合大規模的資料排序

演算法的時間複雜度與大O記法

演算法的時間複雜度 演算法的時間複雜度是乙個關於問題規模n的函式,而且這個函式描述了cpu執行演算法所需要的時間。大o記法 描述時間複雜度優劣的一種記法。2 推導大o階的方法 假設演算法的時間複雜度為t n 1.只保留最高端項 2.將最高端項的常數改為1 第一步 計算語句執行次數t n void m...

時間複雜度分析 大O記法

就是看乙個程式執行消耗的時間,這個最簡單的分析方法但是有很大的缺點 用這種方式去測試需要等待程式執行完畢,浪費了很多時間在等待程式執行上 對於不同的硬體條件,程式執行的速度都是不一樣的,這樣的結果就沒有說服力 程式設計師主要關注的是 使用什麼演算法實現 乙個問題的規模 設t n 為問題規模n的函式,...

演算法分析 大O 大 大

在演算法的學習中,最開始便是要學習演算法的分析。學習演算法分析時,我們便會接觸到這麼幾個符號 大o 大 大 常常讓人難以理解。在通常的演算法分析時,我們可以明白,在輸入規模較小,各種演算法之間的時間消耗並無明顯差別。只有當輸入規模較大時,對各個演算法之間消耗差別的對比與分析才有意義。所以上面幾個符號...