原文:算法與數據結構(十四) 堆排序 (Swift 3.0版)

上篇博客主要講了冒泡排序 插入排序 希爾排序以及選擇排序。本篇博客就來講一下堆排序 Heap Sort 。看到堆排序這個名字我們就應該知道這種排序方式的特點,就是利用堆來講我們的序列進行排序。 堆 其實就是一種有着特定結構的完全二叉樹,下方將會詳細的介紹一下堆。本篇博客講的就是堆排序,首先我們先對大頂堆,小丁堆進行介紹,然后構建堆,最后利用堆的特性對我們的數據序列進行排序。 下方我們依然是先給出相 ...

2016-12-12 09:36 0 3263 推薦指數:

查看詳情

算法數據結構(十七) 基數排序(Swift 3.0)

前面幾篇博客我們已經陸陸續續的為大家介紹了7種排序方式,今天博客的主題依然與排序算法相關。今天這篇博客就來聊聊基數排序,基數排序算法是不穩定的排序算法,在排序數字較小的情況下,基數排序算法的效率還是比較高的。今天就來聊一下基數排序算法的原理以及代碼的具體實現。 一、基數排序算法示意圖 ...

Wed Dec 21 17:41:00 CST 2016 0 3752
算法數據結構(十五) 歸並排序(Swift 3.0)

上篇博客我們主要聊了堆排序的相關內容,本篇博客,我們就來聊一下歸並排序的相關內容。歸並排序主要用了分治法的思想,在歸並排序中,將我們需要排序的數組進行拆分,將其拆分的足夠小。當拆分的數組中只有一個元素時,則這個拆分的數組是有序的。然后我們將這些有序的數組進行兩兩合並,在合並過程中進行比較,合並生成 ...

Fri Dec 16 18:04:00 CST 2016 0 1814
算法數據結構(十六) 快速排序(Swift 3.0)

上篇博客我們主要聊了比較高效的歸並排序算法,本篇博客我們就來介紹另一種高效的排序算法:快速排序。快速排序的思想與歸並排序類似,都是采用分而治之的方式進行排序的。快速排序的思想主要是取出無序序列中第一個值,然后通過比較將比該值小的元素放到該值的前方,將比該值大的元素放在該值的后方。這樣一來該值前方 ...

Mon Dec 19 17:38:00 CST 2016 0 3713
算法數據結構(十三) 冒泡排序、插入排序、希爾排序、選擇排序Swift3.0

本篇博客中的代碼實現依然采用Swift3.0來實現。在前幾篇博客連續的介紹了關於查找的相關內容, 大約包括線性數據結構的順序查找、折半查找、插值查找、Fibonacci查找,還包括數結構的二叉排序樹以及平衡二叉樹的構建與查找,然后還聊了哈希表的構建與查找。接下來的幾篇博客中我們就集中的聊一下常見 ...

Thu Dec 08 18:47:00 CST 2016 5 4860
數據結構算法之堆與堆排序

  在數據結構中,堆其實就是一棵完全二叉樹。我們知道內存中也有一塊叫做堆的存儲區域,但是這與數據結構中的堆是完全不同的概念。在數據結構中,堆分為大根堆和小根堆,大根堆就是根結點的關鍵字大於等於任一個子節點的關鍵字,而它的左右子樹又分別都是大根堆;小根堆與大根堆恰好相反。在C++的STL中優先隊列 ...

Fri Aug 21 05:16:00 CST 2015 1 1841
常用數據結構算法 : 堆排序

  在一次面試當中,面試官問到了自己關於堆排序的一些細節,之前在整理各種高級排序的時候,有看過堆排序,然而在現場要給面試官講解排序的原理的時候,發現自己懵逼了,所以還是需要特地寫一篇隨筆來記錄堆排序的整個原理和過程,這里借鑒了百度知道里頭的堆排序的講解圖。   首先我們要了解什么是堆排序,其排序 ...

Wed Sep 20 22:59:00 CST 2017 0 1052
數據結構算法——堆排序

目錄 基本介紹 大頂堆舉例 小頂堆舉例 排序說明 基本思想 堆排序步驟圖解 步驟一:構造初始堆 步驟二:將堆頂元素與末尾元素進行交換 思路總結 代碼實現 步驟推演 ...

Sun Sep 12 18:57:00 CST 2021 1 205
數據結構算法堆排序

樹、二叉樹的簡單介紹 可以用數組表示一顆二叉樹(數組下標從0開始) 左子節點下標是 2n+1 (n是父節點下標) 右子節點下標是 2n+2 (n是父節點下標) 父節點下標是 ...

Sat Aug 07 02:53:00 CST 2021 0 118
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM