首先上**。
#include using namespace std;
int arr[11];
/*兩個序列合併成乙個序列。一共三個序列,所以用 3 根指標來處理。
i 是 low 到 mid 這個序列下標 序列 1
j 是 mid+1 到 high 這個序列下標 序列 2
k 代表新序列的下表 序列 3
*/void merge(int a, int low, int mid, int high)
void mergesort(int a, int low, int high)
}int main()
{ for(int i = 1; i <= 10; i++)
scanf("%d",&arr[i]);
mergesort(arr,1,10);
for(int i = 1; i <= 10; i++)
cout《分治法一般分為三個步驟。1.分 2.治 3.合併。歸併排序也是分治的思想,所以它也可以分為三步。
1.分。將大序列劃為兩個小序列(當然也可以多個)。一直劃分到序列只有 1 個元素的時候停止。
2.治。因為停止時候序列元素只有 1 個,所以治這一步是沒有體現出來的。
3.合併。這是歸併排序的主要步驟。合併是將兩個序列合併為乙個有序序列。具體怎麼合併,可以參考merge函式注釋。
分治法,歸併排序
1.時間複雜度為o nlog n 非降序 package com.cn.insertion 歸併排序,採用分治法的策略 author administrator public class merge sort mergesort a,0,9 for int i 0 i a.length i 先分在和...
分治法(歸併排序)
分治法.cpp 定義控制台應用程式的入口點。include stdafx.h include include include define max 30 using namespace std int l max int r max void merge int a,int p,int q,int ...
分治法 歸併排序
歸併排序是分治法的典型應用,思想如下 divide divide the array to 2 subarray conquer reverse in 2 subarray,if only one elem return combine merge two ordered subarray t n ...