排序演算法 氣泡排序 優化

2021-10-07 12:40:33 字數 827 閱讀 7993

排序演算法在程式設計中起到非常大的作用,氣泡排序是其中比較經典的演算法。雖然效率不高,但是每個演算法都有適合的場景。氣泡排序就是在排序過程中相鄰元素不斷交換,看起來向元素冒泡一樣。那我們就可以通過新增乙個標誌位來對氣泡排序進行優化處理。因為,在某一次排序的過程中可能需要排序的陣列已經是有序的了,在這個時候我們就可以通過標誌位判斷直接跳出迴圈。

氣泡排序:

時間複雜度是o(n2)

最好情況o(n)

最壞情況o(n2)

空間複雜度 o(1)

排序方式不占用額外記憶體,冒泡演算法是穩定的。在這有些剛剛接觸排序演算法的朋友可能不知道穩定的意思,我就簡單的給大家解釋一下。比如說:在int arr = 陣列中,經過排序後原來兩個1的順序沒有發生變化 。int arr=第乙個1還是在第二個1的前面,就是穩定的,反之就是不穩定的。

以從小到大為例展示氣泡排序過程

圖中紅色的數字,表示已經確定大小不需要在進行排序的數字。看到這大家應該可明顯的看出可以優化的地方,明明在第三趟排序的時候已經整個陣列已經排好序了,但是還是會一直執行到第四趟結束。

從上圖我們還可以發現,氣泡排序一共需要進行排序個數 -1次排序,而且每一趟排序的次數在逐漸減少。

核心**

public

static

void

bubblesort

(int

arr)}if

(!flag)

else

}}

氣泡排序 氣泡排序演算法優化

常用的排序演算法主要包括 1 插入排序 直接插入排序 希爾排序 2 交換排序 氣泡排序 快速排序 3 選擇排序 簡單選擇排序 堆排序快速排序 4 歸併排序其中,氣泡排序算是最簡單的一種排序演算法 public class bubble int temp 0 for int i 0 iarr j 1 ...

排序演算法之 氣泡排序優化

氣泡排序優化演算法思想 我們通過在程式定義了乙個bool型別的flag變數,用來判斷往後的迴圈當中,陣列是否已經是有序的,每一輪迴圈都會設定其值為true,當有元素對調位置時,就將flag的值設定為true,表示該陣列還不是有序陣列。每一輪都要判斷flag的值,如果判斷當前一輪操作沒有元素有位置調換...

氣泡排序演算法 氣泡排序的基礎演算法和優化演算法

如有乙個數列有n 5 個元素,則至多需要n 1 4 趟迴圈才能保證數列有序 2.每一趟迴圈都從數列的第乙個元素開始比較,依次比較相鄰的兩個元素,比較到數列的最後 3.如果前乙個元素大於後乙個元素,則使用第三變數交換 原理 基礎演算法的缺點 1.每一趟比較都要比較到陣列的最後,沒有必要,只要比較到無序...