關於排序其實有很多演算法,冒泡使用是非常廣泛,也很易於理解,經過研究,我發現,冒泡可以有更優化的演算法
首先先來看一下冒泡的流程:
可以看到,一共輸出是36個,去掉最終結果8個也就是28個,就是說冒泡至少需要n-1+n-2+....+1.
那麼我嗯可以通過列印看到有些對比是重複的資料,沒必要出現的,那麼怎麼規避呢?
接下了講一下我要說的這個演算法。我們採取一端開始向另一端逐個比對,一直到無交換情況出現,排序結束
我們需要定義乙個bool值來標誌當前遍歷是否進行交換,如果沒有,那麼排序結束,還需要乙個int值,來標誌我最後交換位置的索引值,下次遍歷的時候只需要遍歷到該索引值即可,(因為它後邊都是排好序的)接下來來看同樣的陣列,他會有什麼樣的表現:
可以看到,一共列印了29次,去掉結果8次,就是21次,根據原理可以發現,他最佳的時候,只需要n次,二冒泡是始終需要那麼多次,差別顯而易見!越有規則的資料,,那麼這個演算法的表現就會越優秀!
冒泡演算法的優化
冒泡演算法的主要思想 氣泡排序和插入排序相類似,都是簡單的排序演算法 時間複雜度o n 2 演算法思想 1 有n個數 存放在陣列a 0 a n 1 中 第一趟將每相鄰兩個數比較,小的換到前面,經n 1次兩兩相鄰比較後,最大的數已經 沉底 放到最後的乙個位置,小數上公升 浮起 2 第二趟對餘下的n 1...
冒泡演算法實現 優化
一 冒泡演算法 1 方式一 c sharp view plain copy intbubble sort intarray,intsize return 0 2 方式二 int bubble sort int array,int size return 0 3 方式三 int bubble sort...
排序演算法 冒泡演算法及其優化
所謂冒泡演算法,就是第乙個跟第二個比,第二個跟第三個比。首先從第乙個樹比到最後乙個數,如果第乙個比第二個大,那麼一二互換,如果二三比,二大,二三再互換,如此下去,最大的數就會排到最後面,然後就是再從第乙個數比到倒數第二個,重複上面的動作 現在我們看一下 22 54 16 vi bublle 1.c ...