氣泡排序以及優化

2021-10-24 20:28:11 字數 860 閱讀 7404

氣泡排序是新手小白學的第乙個排序方法,複雜度很高。那麼如何在氣泡排序的基礎上對其進行優化?

我們給一組資料:9,5,6,7,5,3

第一次冒泡:9和5交換位置(5,9,6,7,5,3);9和6交換位置(5,6,9,7,5,3);9和7交換位置(5,6,7,9,5,3);9和5交換位置(5,6,7,5,9,3);9和3交換位置(5,6,7,5,3,9)。到此9已經排好了,乙個比較了5次。

第二次冒泡(初始資料為5,6,7,5,3,9):5沒有6大,所有5和6不用交換;6和7比較也不用交換;7和5交換位置(5,6,5,7,3,9);7和3交換位置(5,6,5,3,7,9)。由於9是所有數比下來的乙個結果,所以7和9沒有比較的必要,到此7也排好了,乙個比了4次。

第三次冒泡(初始資料5,6,5,3,7,9):5沒有6大,所以5和6不用交換位置,6和第二個5比較後交換位置(5,5,6,3,7,9);6和3交換位置(5,5,3,6,7,9)。根據第二次處理後面數字的原理我們也不用比較6,7,9的大小,所以到此6就排好了,一共比較了三次。

第四次冒泡(初始資料為5,5,3,6,7,9):5和5不用換,第二個5和三交換(5,3,5,6,7,9)。一共比了兩次。

第五次冒泡就排好了。

這是正常情況下的冒泡,我們一直要冒泡5次,但如果第一次冒泡後陣列就有序了,我們就可以不用做剩下的幾次冒泡。也就是說如果在某一次數字全部交換完畢後陣列有序了,那麼下次一定不會交換資料,這時我們就可以退出冒泡。

**實現:

public

static

void

sort

(int

array)}if

(flag ==

false)}

}

氣泡排序以及優化

排序 1.穩定的排序演算法 2.不穩定的排序演算法 3.比較排序 元素之間的次序依賴它們之間的比較,每個數需要與其他數進行比較才能確定自己的位置。比較典型的比較排序有快速排序,歸併排序,堆排序,氣泡排序。4非比較排序 非比較排序只要確定每個元素之前的已有元素個數即可,經過一次遍歷便可以解決。排序 1...

氣泡排序以及優化

最近需要用到氣泡排序,所以翻出來研究一下。氣泡排序的基礎其實就是元素交換,是一種極其簡單的排序演算法。話不多說,直接上 1 include 2 void bubble sort int arr,int len 315 16 17 1819int main 20 22int len int sizeo...

氣泡排序以及氣泡排序的優化

很早接觸過氣泡排序法,但一直沒有真正的理解,只是為了記住而學習,今天又重新看了一下,其實氣泡排序法第一次排序會把最大的冒到最上面,第二次會把次大的泡冒到最大的後面,一次類推 另外在排序的次數上會逐漸減少。看 void bubble sort int a,int n 其實還可以優化一下,當發現沒有進行...