演算法排序 歸併排序法

2021-08-21 18:47:22 字數 882 閱讀 7050

歸併排序法,實際上也是分治法的乙個範例。

主要的思路分為三步:

1.將序列分為兩個子串行。

2.對這兩個子串行分別進行歸併排序,即一直拆分到只有乙個元素。

3.完成排序後將兩個小的子串行進行合併。

下面我來根據我的**來進行測試

public int mergesort(int array)
這是乙個總的函式,下面我將來解釋一下domergesort函式。

private  int domergesort(int array,int left,int right)else

}//把左邊陣列剩餘的陣列拷貝進來

while(temp<=middle)

//把右邊陣列剩餘的陣列部分拷貝進來

while(rightstart<=right)

//最後把輔助陣列中的元素放到原陣列中

for(tempptr = 0,temp = left;temp<=right;temp++,tempptr++)

}

這個演算法是合併有序序列的演算法,相信大家在初學資料結構關於線性表的時候都已經接觸過了。

對於我們的這個方法而言,我麼的a陣列可以理解是array陣列的left到middle之間。b陣列可以理解是array陣列的middle+1到right之間。首先我們設定乙個臨時陣列temparray。然後設定了三個指標temp指標對應的是陣列a,rightstart指標對應的是陣列b,tempstr指標對應的是temparray。之後的插入就和我說的一樣。最後將array陣列的值更新為temparray陣列的值。

歸併排序法

之前覺得這個很難,後來看了一些部落格,理解了之後總算是懂了。算是之前的補充。並且今天筆試有排序演算法,正好做個記錄,加深映象 歸併排序的核心是分而治之,先分開,再兩兩合併,合併的時候調整順序。例如 待排序序列 4 8 5 3 9 6 2 4 第一次分 4 8 5 3 9 6 2 4 第二次分 4 8...

歸併排序法

合併排序 merge sort 是又一類不同的排序方法,合併的含義就是將兩個或兩個以上的有序資料序列合併成乙個新的有序資料序列,因此它又叫歸併演算法。它的基本思想就是假設陣列a有n個元素,那麼可以看成陣列a是又n個有序的子串行組成,每個子串行的長度為1,然後再兩兩合併,得到了乙個 n 2 個長度為2...

歸併排序法

void guibing int r,int temp,int s,int m,int t 陣列r的兩個連續的有序列,從第s到第m個,從第m 1到第t個,合併產生乙個有序列 從第s到第t else temp k r j while i m while j t 將剩餘的插入,只會進行兩個while中的...