C 歸併排序

2021-09-12 13:13:31 字數 818 閱讀 3697

歸併排序(merge sort)是利用歸併的思想實現的排序方法,該演算法採用經典的分治(divide-and-conquer)策略將問題分成一些小的問題然後遞迴求解,即分而治之。

遞迴**:

#includeusing namespace std;

void merge(int arr,int low,int mid,int high)

while(i<=mid&&j<=high)

while(i<=mid)//若比較完之後,第乙個有序區仍有剩餘,則直接複製到t陣列中

temp[k++]=arr[i++];

while(j<=high)//同上

temp[k++]=arr[j++];

for(i=low,k=0;i<=high;i++,k++)//將排好序的存回arr中low到high這區間

arr[i]=temp[k];

delete temp;//刪除指標,由於指向的是陣列,必須用delete

}//用遞迴應用二路歸併函式實現排序——分治法

void mergesort(int arr,int low,int high)

size*=2;//範圍擴大一倍

}}

時間複雜度為o(nlogn),空間複雜度為 o(n),歸併排序比較占用記憶體,但效率高且穩定。

c 歸併排序

1.需求 將乙個陣列通過歸併排序排成有序陣列 2.思想 歸併排序是分治法的乙個典型應用,將兩個有序的序列合併成乙個有序的序列稱為歸併,歸併排序,通過將陣列分成若干個有序的序列,當拆分成只有乙個數時認為是有序的,然後將這些序列歸併。這裡需要用到遞迴。3.實現 public class msort 歸併...

C 歸併排序

include using namespace std void mergesort int array,int start,int end 若某乙個子陣列的元素沒有取完,則全部並於臨時空間 while left idxarray left idx while right idxarray righ...

C 歸併排序

歸併排序是建立在歸併操作基礎上的一種有效的排序演算法,採用分治的思想,將已有序的子串行合併,得到完全有序的序列 即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表。稱為二路歸併,歸併排序是穩定排序。歸併操作,指是將兩順序序列合併成乙個順序序列的方法。如 設有數列 初始狀態 6,...