每天來點演算法_1
歸併排序:
主要過程:將兩個排好序的陣列(具體資料結構視實際情況而定)合併成從大到小的陣列。
缺點:不是在陣列自身儲存空間進行操作。
時間複雜度:O(nlgn)
插入排序:
主要過程:當前的關鍵字與前面的關鍵字進行比較,插入到合適的地方。
時間複雜度:O(n*n)
氣泡排序:
主要過程:相鄰之間的關鍵字進行大小比對和交換。如果從尾部開始比較交換,則"冒泡"就更加形象了。
時間複雜度:O(n*n)
堆排序:
堆的概念:堆換一種說法是完全二叉樹,是一種重要的資料結構。堆可分為最大堆和最小堆。其中優先順序佇列就用到了堆的概念和技術。
主要過程:父節點大於左右子節點,即父節點的關鍵字是最大的。根節點和最後的葉節點進行交換,則最後的葉節點的關鍵字是最大(小)的,然後剔除最後的葉節點,對以根節點(數值變換過)為中心對堆進行重新排序。
複雜度:O(nlgn)
快速排序:
主要過程:在子組中隨機選擇一個數作為分離該子組的基準,然後將小於該基準值的關鍵字集中到該基準的左邊,大於該基準值的關鍵字集中到該基準的右邊。接下來就是遞迴呼叫的問題了。
最差複雜度:O(n*n)(可通過隨機化輸入分佈來避免)
平均複雜度:O(nlgn)(係數較小,所以該演算法在排序中使用率較高)
相關文章
- 每天學一點flash flash簡單加密講解(1)加密
- 每天學一點JAVAJava
- [每天get點新技能]搜商——搜尋發展簡史(1)
- 每天學點node系列-httpHTTP
- [每天get點新技能]搜商——網際網路偵探所(1)
- 谷歌現在使用TensorFlow來阻止每天1億多封Gmail垃圾郵件谷歌AI
- 每天學習linux命令(1)Linux
- 新專案,新的起點,每天進步一點點
- 每天讀一點webpack-001Web
- jQuery之父:每天都寫點程式碼jQuery
- 每天學點C++知識:用合適的工具來分析你的程式碼C++
- Web開發知識點彙總(每天積累一點點)Web
- 每天學點C++知識:大於0並不意味著等於1C++
- [每天進步一點點]mysql筆記整理(三):索引MySql筆記索引
- 日常Java練習題(每天進步一點點系列)Java
- basis每天的工作重點是什麼?
- 每天閱讀一個 npm 模組(1)- usernameNPM
- 每天一個linux命令–which(1)Linux
- 每天一個Linux命令(1):xargsLinux
- 相親原始碼前端開發知識點,每天進步一點點原始碼前端
- exp-parser | 每天讀一點Vue原始碼Vue原始碼
- 每天學點node系列-fs檔案系統
- 每天學一點Swift----物件導向上(八)Swift物件
- [每天get點新技能]搜商——More Query Modifiers
- iOS 9 每天瞭解多一點 :: 目錄iOS
- 每天一個linux命令(1):ls命令Linux
- 每天5分鐘玩轉容器技術(1)
- 每天一個 Linux 命令(1):ls 命令Linux
- 【演算法學習】tarjan 強連通、點雙、邊雙及其縮點 重磅來襲!!!!演算法
- [每天進步一點點]mysql筆記整理(二):事務與鎖MySql筆記
- 每天學點node系列-fs檔案系統(續)
- 每天學點設計模式之---介面卡模式設計模式
- 每天一點小提升,人人都是工程師工程師
- 每天學習一點JVM之:垃圾回收機制JVM
- 每天一個linux命令-檔案(1)-dfLinux
- 資訊圖:Google每天賺1億美元的祕密Go
- 每天一道演算法題:顛倒整數演算法
- 每天一道演算法題:Z字形轉換演算法