算法 合并排序 c++语言

Posted 有头发的程序猿#

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法 合并排序 c++语言相关的知识,希望对你有一定的参考价值。

今天复习算法,盲敲合并排序出现了许多问题,就把该算法彻底理解一遍,敲了几遍,加深自己印象

#include<iostream>
using namespace std;
void Merge(int a[],int left,int middle,int right)

	int m=left,k=left,j=middle+1;
	int *b = new int[right-left];
	while(m<=middle && j<=right)
		if(a[m]<=a[j]) b[k++]=a[m++];
		else b[k++]=a[j++];
	
	if(m>middle)
		for(int q=j;q<=right;q++) b[k++]=a[q];
	
	else
		for(int q=m;q<=middle;q++) b[k++]=a[q];
	
	for(int w=left;w<=right;w++) a[w]=b[w];
	

void MergeSort(int a[],int left,int right)

	if(left<right)   //控制至少两个元素 
		int middle = (left+right)/2;
		MergeSort(a,left,middle);
		MergeSort(a,middle+1,right);
		Merge(a,left,middle,right);
	


int main()

	int a[5]=1,4,2,3,7;
	MergeSort(a,0,4);
	for(int j=0;j<=4;j++) cout<<a[j]<<" ";
    return 0;
  

以上是关于算法 合并排序 c++语言的主要内容,如果未能解决你的问题,请参考以下文章

排序算法的c++实现——归并排序

C++ 不知算法系列之聊聊希尔归并排序算法中的分治哲学

在 C++ 中合并范围

算法 快速排序 c++语言

C++入门:排序之快速排序

【Leetcode题目-03】数组排序算法题目