資料結構 歸併排序

2021-10-04 22:41:03 字數 927 閱讀 5865

歸併排序的基本思想:

歸併排序與快速排序比較類似,都是對資料進行劃分,但與快速排序不同的是歸併排序是將資料均分為左右兩部分,左右兩半部分繼續進行劃分直到劃分為乙個陣列中只有乙個元素,這個陣列在它所在部分為有序,然後將左右兩個有序陣列歸併為乙個有序陣列。

mergedata()函式實現將兩個有序陣列歸併為乙個有序陣列

原理:借助輔助空間,將兩個陣列裡的資料搬移到tmep中

void mergedata(int* array,int left,int right,int mid,int* temp)//將兩組有序的陣列歸併為乙個有序的陣列

//迴圈結束後乙個陣列的值已經搬運完成

while(begin1 < end1)

while(begin2 < end2)

}

mergesort()歸併排序函式

//將資料均分為兩部分,對左右兩半部分繼續進行劃分直到劃分為陣列中只有乙個資料 過程是遞迴的 

//在劃分完成後 對兩個有序陣列進行歸併 過程是遞迴的 遞迴結束後資料有序

void _mergesort(int* array,int left,int right,int *temp)

}void mergesort(int* array,int size)//對_mergesort()封裝

_mergesort(array,0,size,temp);

free(temp);

}

歸併排序的特性總結:

穩定性: 穩定

時間複雜度 :

空間複雜度:

應用:解決在磁碟中的外部排序問題

缺點:歸併的缺點在於需要o(n)的空間複雜度

資料結構 歸併排序

排序 sort 或分類 內部排序方法可以分為五類 插入排序 選擇排序 交換排序 歸併排序和分配排序。歸併排序 include using namespace std 歸併排序中的合併演算法 void merge int a,int left,int center,int len int t int ...

資料結構 歸併排序

歸併排序,即merge sort,通過遞迴式的merge操作 merge即歸併 實現排序。演算法思想是分治思想 divide and conquer 歸併排序一般是遞迴實現的 時間複雜度o nlgn 遞迴都是一去一回,去的時候divide,回的時候conquer。表達欠提煉 1 divide,分 遞...

資料結構 歸併排序!!!

歸併排序 整體思想 將資料分成很多的部分,每次排序資料的一部分,然後將兩部分的資料進行整體排序,這樣一步一步將整體資料排序。如圖 注 將需要排序的資料進行分塊,當每個塊的資料足夠的少的時候就可以進行效率高的排序方法,當兩塊資料排序好的時候就可以將兩塊排序好的資料進行合併。具體實現方法 ifndef ...