設陣列長度為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 ...