掌握選擇排序、氣泡排序、合併排序、快速排序、插入排序演算法原理
掌握不同排序演算法時間效率的經驗分析方法,驗證理論分析與經驗分析的一致性。
現在有10億的資料(每個資料四個位元組),請快速挑選出最大的十個數,並在小規模資料上驗證演算法的正確性。
排序不多說,講一下第3點。3是經典的topk問題,這麼大的資料量肯定不能排序了。容易想到的思路是開兩個陣列,乙個放10億個數,乙個放10個數。把大陣列掃一遍,對每個數插到小陣列裡合適的位置(像插入排序一樣),如果它比最後乙個數還小就不插。
有沒有更快的解決辦法呢?有乙個資料結構可以降低小陣列的比較次數——堆。對小數組建乙個小頂堆,如果要插進來的數比頂大,就將頂替換成它,然後做一次小頂化。這樣替換的效率就是log了。
排序演算法效能分析
一 基於比較的排序演算法 1.插入排序法 直接插入排序,希爾排序,不常用的 tree sort library sort patience sorting 2.交換排序 氣泡排序,快速排序,計數排序 3.選擇排序 直接選擇排序,堆排序 4.歸併排序 歸併排序 二 不基於比較的排序演算法 基數排序,桶...
各排序演算法效能分析
插入排序 最壞時間始n 2 快速排序和插入排序的區別是 插入排序始將關鍵字插入已排序的子串行中,而快速排序始 對整個檔案,把基準關鍵字放到正確的位置上。快排最壞時間依然是n 2,平均時間始nlgn。在堆排序 的過程中只需乙個輔助空間 所以空間 複雜度為 0 1 堆排序的時間複雜度為 nlgn 由於堆...
常用排序演算法效能分析
在平時寫 時比較常用的幾種演算法,效能 如下 排序法 平均時間 最壞 穩定額外空間 氣泡排序 o n 2 o n 2 穩定 o 1 選擇排序 o n 2 o n 2 不穩定 o 1 插入排序 o n 2 o n 2 穩定 o 1 快速排序 o nlogn o n o n 2 不穩定 o nlogn ...