分治法實現歸併排序

2021-06-06 11:10:38 字數 748 閱讀 9886

//分治法實現歸併排序

#include using namespace std;

#define size 10

void merge(int array,int first,int mid,int last) //合併

if(i <= mid)

for(;i <= mid;i++)

new_arr[k++] = array[i];

if(j <= last)

for(;j <= last;j++)

new_arr[k++] = array[j];

for(int p = first;p <=last;p++) //將排好順序的元素放回原陣列【注意:p的範圍為每個小分支中的元素,而非整個0到sizeof(arr)/sizeof(int)】

array[p]=new_arr[p];

}void merge_sort(int array,int first,int last)//歸併排序

分治法實現歸併排序

將乙個難以直接解決的大問題,分割成一些規模較小的相同問題,以便各個擊破,分而治之。將待排序元素分成大小大致相同的兩個子集合,分別對兩個子集合進行排序,最終將排好序的子集合合併成要求的排好序的集合 void mergesort int a,int left,int right void mergeso...

分治法,歸併排序

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