C 實現歸併排序演算法

2022-10-03 23:21:18 字數 957 閱讀 4557

歸併

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

演算法描述

歸併操作的工作原理如下:

1、申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合併後的序列

2、設定兩個指標,最初位置分別為兩個已經排序序列的起始位置

3、比較兩個指標所指向的元素,選擇相對小的元素放入到合併空間,並移動指標到下一位置

4、重複步驟3直到某一指標超出序列尾

5、將另一串行剩下的所有元素直接複製到合併序列尾

圖示c++**

#include

using npmobyphtamespace std;

//比較相鄰序列

void merge(int arr,int temp,int start,int mid,int end)

//將多餘的數放到序列末尾

while(i != mid+1)

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

while(j != end+1)

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

//更新序列

for(i = start;i <= end;i++)

arr[i] = temp[i];

}void mergesort(int arr,int temp,int start,int end)

}int main();

int i, b[8];

mergesort(a, b, 0, 7);

for(i=0; i<8; i++)

cout<

本文標題: c++實現歸併排序演算法

本文位址: /ruanjian/c/303486.html

歸併排序演算法實現(C )

歸併操作 merge 也叫歸併演算法,指的是將兩個已經排序的序列合併成乙個序列的操作 1 i 3 1 6 8 38 100 202 301 4 根據例子實現的演算法為 include using namespace std int a void merge array int a,int n,int...

歸併排序演算法(C 實現)

歸併排序 merge sort 是利用 歸併 技術來進行排序。歸併是指將若干個已排序的子檔案合併成乙個有序的檔案。歸併排序有兩種方式 1 自底向上的方法2 自頂向下的方法 1 自底向上的方法 1 自底向上的基本思想 自底向上的基本思想是 第1趟歸併排序時,將待排序的檔案r 1.n 看作是n個長度為1...

歸併排序演算法實現

const int maxn 100 將陣列a的 l1,r1 與 l2,r2 區間合併為有序區間 此處l2即為r1 1 void merge int a,int l1,int r1,int l2,int r2 while i r1 temp index a i 將 l1,r1 剩餘元素加入temp ...