演算法 氣泡排序

2021-08-18 19:30:42 字數 1226 閱讀 3302

前面講過 選擇排序 是基於元素比較的,現在這個是基於相鄰元素比較的演算法

演算法描述:

使用從小到大的排序策略.

從最後乙個元素開始,按照從後向前的方向,相鄰元素之間進行比較,如果發現後乙個元素比前乙個元素小,則交換,直至陣列結束,這樣就可以找出最小的元素,放在第乙個位置.

然後再次重複上面的策略,在剩下的元素中找到最小的元素放在第二個位置.

直至整個迴圈結束

演算法實現為:

public class bubblesort ;

system.out.println("before insert sort "+ arrays.tostring(nums));

sort(nums);

system.out.println("after insert sort "+arrays.tostring(nums));

}public static void sort(int arrays) }}

}}

這個過程就像水裡的氣泡上浮一樣,每次外迴圈結束都上浮乙個最小的元素(剩餘元素中的最小元素),這樣直至整個陣列結束,所有的元素都變得有序了

這裡有個小的優化點,就是內迴圈的迴圈次數,並不需要n次,因為每次上浮都會使陣列的前 i 個元素變得有序

優化

public static void sort(int arrays) }}

}

優化點為內迴圈的迴圈次數,由n次,減小到了 n-i 次,條件由 j>0 改為 j>i

這裡面有個點需要說明下,我們再插入排序中由這樣的寫法:

for(int j=i ; j> 0 && arrays[j] < arrays[j-1] ; j--)

我們將比較條件放在了 for()迴圈的迴圈體中,在氣泡排序中,我們可以這樣寫麼?比如:

for (int j = length - 1; j > i && arrays[j] < arrays[j - 1]; j--)
答案是肯定不行,如果你這樣寫了,你一定不能得到正確的排序結果,

對於插入排序來說,他的條件是在已經排好順序的陣列中找個乙個合適的位置插入,比較的過程是發生在相鄰元素之間的,只要待插入的元素比有序陣列中的元素大,則立即結束迴圈,然後插入制定位置.

插入排序

氣泡排序演算法 C 氣泡排序演算法排序詳解

氣泡排序是最簡單的排序方法,理解起來容易。雖然它的計算步驟比較多,不是最快的,但它是最基本的,初學者一定要掌握。c 氣泡排序演算法的例項源 一些排序方法的 集錦,該函式模板使用冒泡法對集合元素進行排序,引數說明 collection 集合物件,集合物件必須提供 操作。element 集合元素,該引數...

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

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

排序演算法 氣泡排序

一.氣泡排序的過程 公升值排序 1.將第乙個記錄的關鍵字與第二個記錄的關鍵字進行比較,若key 1 key 2 則交換。然後比較第二個與第三個,依此類推,直到第n 1個與第n個比較為止,第一趟排序完後,記錄最大的關鍵字會被排在最後面。2.將記錄的前n 1個關鍵字進行第二趟比較交換,直到前n 1個中最...