白話經典演算法系列

2021-06-05 14:52:51 字數 1110 閱讀 3424

堆排序與快速排序,歸併排序一樣都是時間複雜度為o(n*logn)的幾種常見排序方法。學習堆排序前,先講解下什麼是資料結構中的二叉堆。二叉堆的定義二叉堆是完全二叉樹或者是近似完全二叉樹。二叉堆滿足二個特性:1.父結點的鍵值總是大於或等於(小於或等於)任何乙個子節點的鍵值。2.每個結點的左子樹和右子樹都是乙個二叉堆(都是最大堆或最小堆)。當父結點的鍵值總是大於或等於任何乙個子節點的鍵值時為最大堆。當父...

2011-08-22 20:04

閱讀(7792)

2011-08-13 17:19

閱讀(2653)

歸併排序是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法(divide and conquer)的乙個非常典型的應用。首先考慮下如何將將二個有序數列合併。這個非常簡單,只要從比較二個數列的第乙個數,誰小就先取誰,取了後就在對應數列中刪除這個數。然後再進行比較,如果有數列...

2011-08-11 11:01

閱讀(2055)

2011-08-09 11:15

閱讀(1147)

希爾排序的實質就是分組插入排序,該方法又稱縮小增量排序,因dl.shell於2023年提出而得名。   該方法的基本思想是:先將整個待排元素序列分割成若干個子串行(由相隔某個「增量」的元素組成的)分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序(增...

2011-08-08 11:41

閱讀(1281)

直接插入排序(insertion sort)的基本思想是:每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子串行中的適當位置,直到全部記錄插入完成為止。   設陣列為a[0…n-1]。 1.      初始時,a[0]自成1個有序區,無序區為a[1..n-1]。...

2011-08-06 19:27

閱讀(1110)

氣泡排序是非常容易理解和實現,,以從小到大排序舉例:設陣列長度為n。 1.比較相鄰的前後二個資料,如果前面資料大於後面的資料,就將二個資料交換。 2.這樣對陣列的第0個資料到n-1個資料進行一次遍歷後,最大的乙個資料就「沉」到陣列第n-1個位置。 3.n=n-1,如果n...

2011-08-06 19:20

閱讀(1819)

白話經典演算法系列筆記一氣泡排序

一直以來都想好好補補演算法的東西,正好看到it面試論壇中的白話經典演算法系列,覺得將以前的一些演算法再次熟悉下似乎不錯。所以就從它開始把。我實現及注釋 include using namespace std void swap int a,int b 基礎版氣泡排序 void bubblesort1...

白話經典演算法系列之八 白話經典演算法之七大排序總結篇

在我的部落格對氣泡排序,直接插入排序,直接選擇排序,希爾排序,歸併排序,快速排序和堆排序這七種常用的排序方法進行了詳細的講解。首先回顧下各種排序的主要思路 一 氣泡排序 氣泡排序主要思路是 通過交換使相鄰的兩個數變成小數在前大數在後,這樣每次遍歷後,最大的數就 沉 到最後面了。重複n次即可以使陣列有...

白話經典演算法系列一 冒泡演算法的實現 優化

設陣列長度為n。1 比較相鄰的前後二個資料,如果前面資料大於後面的資料,就將二個資料交換。2 這樣對陣列的第0個資料到n 1個資料進行一次遍歷後,最大的乙個資料就 沉 到陣列第n 1個位置。3 n n 1,如果n不為0就重複前面二步,否則排序完成。氣泡排序 公升序排列 target排序陣列 n個數需...