一、歸併排序思路
大體思路就是將資料在中位數的位置分成兩個區間,一直重複,直到最後節點只有乙個數
二、程式
#include #include#include
//用setprecision(n)設定精度,其中n表示精確到小數點後n位
using
namespace
std;
void merge(int arr, int l, int m, int r)
while (p1 <=m)
while (p2 <=r)
help[i] =null;
for (i = 0; help[i]!=null; i++)
}void mergesort(int arr, int l, int r)
int mid = l + ((r - l) >> 1
); mergesort(arr, l, mid);
mergesort(arr, mid + 1
, r);
merge(arr, l, mid, r);
}void mergesort(int arr,int size)
mergesort(arr,
0, size - 1);}
intmain()
; mergesort(array,
9); //
呼叫for (int i = 0; i < 9; i++)
return0;
}
排序演算法(4) 歸併排序
簡介 歸併排序是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法 divide and conquer 的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列 即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併。一 主要步驟 將待排序陣列 0....
4 歸併排序演算法
1 歸併排序 merge sort 基本思想 歸併排序法是將兩個或兩個以上的有序表合併成乙個新的有序表 即將待排序的序列分成若干個子串行,每個子串行是有序的,然後再把有序子串行合併為整體子串行 利用歸併的思想實現二路歸併排序的實現步驟 首先將整個資料表看成是n個有序子表,每個子表長度為1 當然有序啦...
內部排序演算法4(歸併排序)
將兩個有序表合成乙個新的有序表就是二路歸併。例如,在元素序列l中有兩個已經排好序的有序順序表l left l mid 和l m id 1 l righ t 它們可以歸併成為乙個有序表,仍然存放於l left l righ t 中。在歸併排序中,用變數 i 和 j分別做 l 中兩個表的當前檢測指標,用...