排序--看一眼就忘不了
排序是為了方便檢索,涉及到一組內容,對這一組物件按照規定次序重新排列。
排序的規則和方式多種多樣,每一類排序方式他們的基本思想是一致的。不同排序方式的適用情況和優劣,用時間複雜度和空間複雜度衡量。每一種排序方法本身決定了排序方法的穩定性。所以我們可以從四個方面巨集觀的理解排序的內容。
分類
排序根據待排序的記錄是否全部放在記憶體中分為內部排序和外部排序。內部排序表示記錄全部存放在記憶體中。這裡我們只介紹內部排序。
基本思想
指標
時間複雜度的分析從鍵值比較的次數和記錄移動的次數兩方面來考慮。
4類排序,列出共6種;插入排序是一種,歸併排序一種。交換排序和選擇排序都是兩種。
在時間複雜度上分為了兩類:其中3種時間複雜度為O(n^2)分別是氣泡排序和名稱中帶“直接”二字的直接插入排序和直接選擇排序。通過適用範圍得出,除了堆排序外,時間複雜度為O(n^2)的排序方式,都適用於記錄數量小的序列;
穩定性
穩定性是指相同鍵值的兩個記錄在排序前後相對位置的變化情況。如果相對位置不會變化為穩定,反之不穩定;
在上圖中,4類,6種排序方法中,歸併和插入都是穩定的,選擇是都不穩定的。交換排序中,冒泡是穩定的,快速是不穩定的。
總結
對排序從這4個角度入手,從巨集觀上總結。每一類排序都有主要的思想,每一類中圍繞思想擴充套件出多種排序方式。當排序一個序列的時候,根據實際情況和排序演算法的優劣選擇出合適的。
相關文章
- 看一眼就學會的 HTML 小遊戲搭建!HTML遊戲
- 看一眼就解鎖:三星Note7虹膜解鎖介面曝光!
- 面試時寫不出排序演算法?看這篇就夠了。面試排序演算法
- 面試時寫不出排序演算法?看這篇就夠了面試排序演算法
- 聊一聊Gin Web框架之前,看一眼httprouterWeb框架HTTP
- 忘不了的 TODOS & FIXMES & ERRORSError
- 使用Mac通知中心,生活訊息一眼看盡!Mac
- 一看就懂的氣泡排序和【3】步深度優化法排序優化
- 【演算法】排序03——看著複雜其實就兩步的堆排序(含程式碼實現)演算法排序
- 瞅一眼就會使用GO的併發程式設計分享Go程式設計
- 【ajax】 html js jquery ajax上傳檔案【一眼就會】【實用】HTMLJSjQuery
- 【js基礎】【一眼就會】js json Object String 互轉JSONObject
- 看動畫學演算法之:排序-count排序動畫演算法排序
- 看動畫學演算法之:排序-快速排序動畫演算法排序
- 堆排序就這麼簡單排序
- 拓撲排序就這麼回事排序
- 快速排序就這麼簡單排序
- 看動畫學演算法之:排序-基數排序動畫演算法排序
- mongoDB看這篇就夠了MongoDB
- 就業寒冬,從拉勾招聘看Python就業前景就業Python
- 氣泡排序就這麼簡單排序
- 基數排序就這麼簡單排序
- 歸併排序就這麼簡單排序
- 插入排序就這麼簡單排序
- 選擇排序就這麼簡單排序
- Miniscope視力檢測儀:想知道自己多“瞎”看一眼它就ok
- Oracle索引,看這篇就夠了Oracle索引
- 一看就懂的SpringSpring
- linux awk 一看就懂Linux
- 看圖輕鬆理解計數排序排序
- 【我就瞎記記,你就瞎看看】小演算法-桶排序演算法排序
- 十大排序演算法,看這篇就夠了(附完整程式碼/動圖/優質文章)排序演算法
- 從招聘網看Python就業前景Python就業
- 入門Webpack,看這篇就夠了Web
- Android Fragment看這篇就夠了AndroidFragment
- HttpServletRequest,看這篇文章就夠了HTTPServlet
- OAuth授權|看這篇就夠了OAuth
- Zookeeper入門看這篇就夠了