優化算法 --冒泡算法

關於排序其實有很多算法,冒泡使用是非常廣泛,也很易於理解,經過研究,我發現,冒泡可以有更優化的算法

首先先來看一下冒泡的流程:

                                                                                                                                         

可以看到,一共輸出是36個,去掉最終結果8個也就是28個,就是說冒泡至少需要n-1+n-2+....+1.

那麼我嗯可以通過打印看到有些對比是重複的數據,沒必要出現的,那麼怎麼規避呢?

接下了講一下我要說的這個算法。我們採取一端開始向另一端逐個比對,一直到無交換情況出現,排序結束

我們需要定義一個bool值來標誌當前遍歷是否進行交換,如果沒有,那麼排序結束,還需要一個int值,來標誌我最後交換位置的索引值,下次遍歷的時候只需要遍歷到該索引值即可,(因爲它後邊都是排好序的)接下來來看同樣的數組,他會有什麼樣的表現:

可以看到,一共打印了29次,去掉結果8次,就是21次,根據原理可以發現,他最佳的時候,只需要n次,二冒泡是始終需要那麼多次,差別顯而易見!越有規則的數據,,那麼這個算法的表現就會越優秀!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章