分治法 歸併排序 mergesort

2022-08-21 05:57:12 字數 685 閱讀 8687

首先上**。

#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 ...