mergesort.h

来自「本代码实现了几乎所有的排序算法」· C头文件 代码 · 共 50 行

H
50
字号
#include <iostream.h>

void Merge(int *a, int *b, int l, int m, int n)
{
	int i=l,j=m+1,k=l-1;
	
	while(i<=m && j<=n)
	{
		if(a[i]<a[j])
			b[++k]=a[i++];
		else 
			b[++k]=a[j++];
	}
		
	if(i<=m)
		for (int t=i;t<=m;t++)
			b[++k]=a[t];
	if(j<=n)
		for (int t=j;t<=n;t++)
			b[++k]=a[t];
	for(i=l;i<=n;i++)
			a[i]=b[i];
}



void MergeSort(int *A, int *B, int l, int h)
{
	if(l == h)
		return;
	int m = (l+h)/2;
	MergeSort(A, B, l, m);
	MergeSort(A, B, m+1, h);
	Merge(A, B, l, m, h);
}
//接口函数
void mergesort(int *a,int num)
{
	int *temp;
	temp = new int [num];
	if (temp != NULL)
	{
		MergeSort(a,temp,0,num-1);
		for (int i=1;i<num;i++)
			a[i]=temp[i];
		delete temp;
	}
	else
		return;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?