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

2021-08-09 20:44:21 字數 868 閱讀 7907

設陣列長度為n。

1.比較相鄰的前後二個資料,如果前面資料大於後面的資料,就將二個資料交換。

2.這樣對陣列的第0個資料到n-1個資料進行一次遍歷後,最大的乙個資料就「沉」到陣列第n-1個位置。

3.n=n-1,如果n不為0就重複前面二步,否則排序完成。

// 氣泡排序 公升序排列 target排序陣列

// n個數需要進行n-1次遍歷 [1,n)

// 假設當前第k次冒泡,則比較需要從 0到n-k-1 [0,n-k)

public int bubblesort1(int target)

}} return target;

}

// 氣泡排序 公升序排列 加入監視哨優化

// 如果一次遍歷沒有發生交換,則已經完成了排序

public int bubblesort2(int target )

// 在一次遍歷的最後一次比較時判斷此次遍歷發生交換的次數

if (j == (target.length - i - 1)) }}

} else

} return target;

}

// 氣泡排序 公升序排列 進一步優化

public int bubblesort3(int target )

for (int j = 0; j < end; j++)

// 在一次遍歷的最後一次比較時判斷此次遍歷發生交換的次數

if (j == (end - 1)) }}

}else

} return target;

}

白話經典演算法系列

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

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

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

氣泡排序(重溫經典演算法系列)

單個元素時肯定是有序的 故首元素單獨有序,從 1,n 為待排元素所在的區間 i 控制 n 1輪冒泡 即執行一系列兩兩元素對比的操作 第 i 輪能夠選出第 i 大 或者小 的元素值,n 1輪 選出 n 1 個較大 或者小 值之後,整個序列即可有序 for int i 1 i n i 外層i 控制 n ...