氣泡排序的理解和Java的實現

2021-09-24 15:41:59 字數 849 閱讀 8982

昨天對於快排進行了整理,接下來準備把各個常用的排序進行整理。

氣泡排序是一種通過相鄰的數相互比較,每次找到乙個最大的數字,然後把它放到最後一位。依次進行,就可以將乙個陣列排序完成。

這種方式很明顯需要的是兩個指標進行迴圈,當出現前乙個數字較大時候,就將它和後一位的數字進行調換操作。

public

class

bubblesort

;bubblesort

(arr)

;for

(int i =

0; i < arr.length; i++)}

private

static

void

bubblesort

(int

arry)}}

}}

很明顯,氣泡排序的時間複雜度較高,同時我們會發現,如果第一遍外層迴圈遍歷並沒有出現需要排序的問題,我們就可以直接將這個陣列輸出,而不是再次遍歷。

優化

我們發現當第一次外層迴圈完成後,排序就完成了。後面的迴圈只有比較,而沒有交換。

當一次外層迴圈中,相鄰的元素沒有發生交換,就說明陣列已經是有序的了,這時可以跳出迴圈。

這樣,我們可以設定乙個布林變數,記錄一次外層迴圈中是否發生交換,如果未發生交換,演算法就返回。

private

static

void

bubblesort2

(int

arr)}if

(!flag)

break

;//沒有資料交換,陣列已經有序,退出排序

}}

Java實現氣泡排序和選擇排序

氣泡排序 依次比較兩個相鄰的元素,如果他們的順序 如從大到小 首字母從a到z 錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素已經排序完成。冒牌排序是穩定排序法。如下 氣泡排序 依次比較相鄰的兩個元素,如果前邊的元素大於後邊的元素則交換 這樣每次先排好的是最後...

希爾排序的理解和實現 Java

希爾排序 shell sort 這個排序方法又稱為縮小增量排序,是1959年d l shell提出來的。該方法的基本思想是 設待排序元素序列有n個元素,首先取乙個整數increment 小於n 作為間隔將全部元素分為increment個子序列,所有距離為increment的元素放在同乙個子串行中,在...

氣泡排序java實現

基本思想 將待排序的n個元素垂直排成一列,依次比較上下相鄰的兩個元素,如果上面的數大於下面的,則兩者交換,第一趟氣泡排序的結果使得關鍵字最大的記錄被放在最後乙個位置上,然後第二趟起泡排序對前n 1個記錄進行同樣操作,結果是關鍵字次大的記錄被安放在第n 1個位置上,以此類推共進行n 1趟排序。特點 穩...