合併排序演算法

2021-09-30 09:34:21 字數 786 閱讀 5182

演算法hebingpaixu函式的遞迴過程只是將待排序的集合一分為二,直至待排序集合只剩下1個元素為止。

然後不斷的合併2個排好序的陣列段。(它可以和快速排序時間複雜度一致)

舉個例子,大致是按這樣的情況進行的

初始序列[8] [4] [5] [6] [2] [1] [7] [3]

歸併到b [4 8] [5 6] [1 2] [3 7]

複製到a [4 8] [5 6] [1 2] [3 7]

歸併到b [4 5 6 8] [1 2 3 7]

複製到a [4 5 6 8] [1 2 3 7]

歸併到b [1 2 3 4 5 6 7 8]

複製到a [1 2 3 4 5 6 7 8]

#include#include#includeusing namespace std;

void hexinsuanfa(int a,int b,int l,int mid,int r)

if(la>mid)

else for(int j = la;j<=mid;j++) b[lb++] = a[j]; }

void hebingpaixu(int a,int left,int right,int n) {

int i;

int *b = new int[n];

if(left>n;

int *hr = new int[n];

cout<<"輸入你要排序的陣列內容:"<>hr[i];

hebingpaixu(hr,0,n-1,n);

for(i=0;i

合併排序演算法

陣列ary的m個元素,ary p ary q ary q 1 ary r 已按曾序排序 使得ary p ary r 按曾序排列 void clibrary merge int ary,int p,int q,int r,int m else k 0 for i p i r i ary i bp k ...

合併排序演算法

主要思想 不斷將已經有序的子陣列a p.q 和a q 1.r 合併為新的有序的陣列a p.r 具體過程可如下操作 分解 將n個元素分成各含n 2個元素的子串行 解決 對兩個子陣列遞迴地排序 合併 合併兩個已經有序的子陣列得到最終的有序陣列。合併 歸併排序 分治策略 include include u...

合併排序演算法

合併排序是用分治策略實現的排序演算法之一。基本思想是 將待排序的元素分成大小大致相同的兩個子集合,分別對這兩個子集合進行排序,最後將排好序的子集合合併成所需要的集合。此方法的時間複雜度t n o nlogn 這種排序方法漸進最優演算法。合併排序 遞迴 include using namespace ...