氣泡排序與歸併排序

2021-10-01 23:33:23 字數 2759 閱讀 5911

方法一:思想是相鄰元素逐個比較,然後將最大的放在後面。每遍歷完一次,就會有乙個元素就位,所以時間複雜度為o(n^2)

public

class

linearrecur

;int low =0;

int high = b.length;

int index =0;

bubblesort

(b, low, high)

;for

(int i =

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

public

static

void

bubblesort

(int

array,

int low,

int high)}}

}}<

/pre>

2.方法二:排序時,很可能其中的元素已經大部分就位了,由此我們每一次遍歷,通過乙個flag標誌位檢查該組元素是否已經就位,如果已經就位,我們就結束。結果如圖所示:

3.方法三:排序時,可能後一部分元素一次排序後就大部分已經就位了,而在這種情況下,利用flag進行的排序並沒有很好的利用這組元素的這一特性。基於此,我們對該演算法進行改進。結果如圖所示:

4.演算法穩定性:只有在下面情況下,所用演算法才是穩定的

歸併排序:歸併排序是利用分治與遞迴的思想,先將序列分為多個子串行,然後子串行遞迴排序,並且歸併子串行。主要思路如下圖所示:

排序演算法 氣泡排序,歸併排序,快速排序

氣泡排序 屬於交換排序的一種。很好理解的交換排序是這樣的 for int i 0 i n i for int j i 1 j n j 這個演算法的邏輯是從頭到尾掃瞄元素,將這個元素和它後面的所有元素進行比較,如果有比它更小的,那就交換,最後交換的一定是最小的,然後元素指標i後移,再比較它後邊的所有元...

氣泡排序,快速排序,堆排序,歸併排序

1.氣泡排序 1 基本思想 從無序序列頭部開始,進行兩兩比較,根據大小交換位置,直到最後將最大 最小 的資料元素交換到了無序序列的隊尾,從而成為有序序列的一部分 下一次繼續這個過程,直到所有資料元素都排好序。演算法的核心在於 每次通過兩兩比較交換位置。選出剩餘無序序列裡最大 最小 的資料元素放到隊尾...

排序演算法 氣泡排序 快排 歸併排序

氣泡排序 bubble sort 也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。步驟 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同...