排序 歸併排序

2021-10-05 04:25:09 字數 882 閱讀 6250

歸併排序(merge-sort)是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法(divide and conquer)的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列;即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表稱為二路歸併。歸併排序是一種穩定的排序方法。

1.通過遞迴不斷形成子串行。

2.將子串行不斷進行排序,使子串行有序。

3.遞迴出棧時,將兩邊有序的子串行歸併到原陣列形成有序序列。

//歸併排序 

#include

int helper[10]

;int

merge

(int arr,

int min,

int mid,

int max)

while

(left<=mid&&right<=max)

else

}//如果左邊先歸併完,右側陣列不用操作就在本身位置排好的

//如果右邊先排完,需要將左側剩餘的補到原陣列後面

while

(left<=mid)

}int

mergesort

(int arr,

int min,

int max)

}int

main()

;mergesort

(arr,0,

9);int i;

for(i=

0;i<

10;i++

)return0;

}

排序 歸併排序

歸併 merge 排序法是將兩個 或兩個以上 有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。歸併 將兩個已經排好序的集合合併到乙個集合眾,並且保證新的集合也是有序的。核心點 只有乙個元素的集合是已經排好序的集合。歸併排序是建立在...

排序 歸併排序

歸併 merge 排序法是將兩個 或兩個以上 有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。該演算法是採用分治法 divide and conquer 的乙個非常典型的應用。2 路歸併演算法 1.演算法基本思路 設兩個有序的子檔...

排序 歸併排序

利用遞迴的思想,當n 1時,只有乙個元素需要排序,為遞迴臨界條件 否則,遞迴的將前半部分資料和後半部分資料各自歸併排序,得到排序後的兩部分資料,然後再將得到的兩部分合併到一起。mergesort algorithm public void mergesort int data mergesort例程...