上篇博客主要講了冒泡排序、插入排序、希爾排序以及選擇排序。本篇博客就來講一下堆排序(Heap Sort)。看到堆排序這個名字我們就應該知道這種排序方式的特點,就是利用堆來講我們的序列進行排序。“堆”其實就是一種有着特定結構的完全二叉樹,下方將會詳細的介紹一下堆。本篇博客講的就是堆排序,首先我們先 ...
上篇博客我們主要聊了比較高效的歸並排序算法,本篇博客我們就來介紹另一種高效的排序算法:快速排序。快速排序的思想與歸並排序類似,都是采用分而治之的方式進行排序的。快速排序的思想主要是取出無序序列中第一個值,然后通過比較將比該值小的元素放到該值的前方,將比該值大的元素放在該值的后方。這樣一來該值前方的數據都要比該值小,該值后方的數據都要比該值大。然后再次對前半部分和后邊半部分無序的數列進行上述操作,這 ...
2016-12-19 09:38 0 3713 推薦指數:
上篇博客主要講了冒泡排序、插入排序、希爾排序以及選擇排序。本篇博客就來講一下堆排序(Heap Sort)。看到堆排序這個名字我們就應該知道這種排序方式的特點,就是利用堆來講我們的序列進行排序。“堆”其實就是一種有着特定結構的完全二叉樹,下方將會詳細的介紹一下堆。本篇博客講的就是堆排序,首先我們先 ...
tip:這個算法還是有點難度的,而且有些地方只可意會不可言傳,很難用文字表述出來,也可能我語言表達能力不行😂,反正讀者要多動腦筋。而且我也可能有寫錯想錯的地方,畢竟我也是剛學,如果有大佬看出問題了,請務必跟我說,我好改正,謝謝了。 目錄 簡單介紹 基本思想 ...
排序算法包括很多種,其中快速排序是其中一種比較快的排序算法,今天就來介紹一下: 快速排序的基本實現思想就是將當前待排序列分成兩個部分、一個值。一個值:就是選定出一個值作為被比較的元素。兩個部分:所有比該被選定元素大的部分都去該元素的右邊,所有比被選定元素小的部分都去該元素的左邊 ...
上篇博客我們主要聊了堆排序的相關內容,本篇博客,我們就來聊一下歸並排序的相關內容。歸並排序主要用了分治法的思想,在歸並排序中,將我們需要排序的數組進行拆分,將其拆分的足夠小。當拆分的數組中只有一個元素時,則這個拆分的數組是有序的。然后我們將這些有序的數組進行兩兩合並,在合並過程中進行比較,合並生成 ...
前面幾篇博客我們已經陸陸續續的為大家介紹了7種排序方式,今天博客的主題依然與排序算法相關。今天這篇博客就來聊聊基數排序,基數排序算法是不穩定的排序算法,在排序數字較小的情況下,基數排序算法的效率還是比較高的。今天就來聊一下基數排序算法的原理以及代碼的具體實現。 一、基數排序算法示意圖 ...
本篇博客中的代碼實現依然采用Swift3.0來實現。在前幾篇博客連續的介紹了關於查找的相關內容, 大約包括線性數據結構的順序查找、折半查找、插值查找、Fibonacci查找,還包括數結構的二叉排序樹以及平衡二叉樹的構建與查找,然后還聊了哈希表的構建與查找。接下來的幾篇博客中我們就集中的聊一下常見 ...
一:基本思想 二:圖解實現過程 三:代碼實現 四:快速排序優化 (一)優化選取樞軸 改進方法 ...
快速排序是對冒泡排序的一種改進,是所有內部排序算法中平均性能最優的排序算法。其基本思想是基於分治法的:在待排序數組L[1...n]中任取一個元素pivot作為基准,從數組的兩端開始掃描。設兩個指示標志(low指向起始位置,high指向末尾),先從后向前掃描(high遞減),如果high位置 ...