排序 歸併排序

2021-07-11 20:30:30 字數 739 閱讀 8966

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

//mergesort algorithm

public void mergesort(int data)

//mergesort例程;

public void mergesort(int data,int tmparray,int left,int right)

int center=left+(right-left)/2;

mergesort(data,tmparray,left,center);

mergesort(data,tmparray,center+1,right);

merge(data,tmparray,left,center+1,right);

} //merge例程;

public void merge(int data,int tmparray,int leftpos,int rightpos,int rightend)

{ int leftend=rightpos-1;

int tmppos=leftpos;

int index=leftpos;//記錄沒有更改時的leftpos,最後對data賦值時使用;

while(leftpos<=leftend&&rightpos<=rightend)

{if(data[leftpos]

排序 歸併排序

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

排序 歸併排序

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

排序 歸併排序

概述 歸併排序是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法 divide and conquer 的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列 即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併。基本思想 將待排序序列r 0.n...