[算法]归并排序

Posted z354681250

tags:

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

/*
Name:归并排序

Actor:HT

Time:2015年12月14日

Error Reporte:

*/

#include"stdio.h"
#include"iostream"
#include"string.h"
#include"stdlib.h"
#include"string"
#include"map"

using namespace std;

int temper[100];	//排序辅助空间 

void mergearr(int* arr, int begin, int mid, int end)	//归并排序的数组合并

	int i = begin, j = mid + 1;
	int m = mid, e = end;
	int t = 0;
	for (; i <= m && j <= end;)	//两个数组比较大小合并
	
		if (arr[i] > arr[j])
		
			temper[t] = arr[i];
			t++; i++;
		
		else
		
			temper[t] = arr[j];
			t++; j++;
		
	
	while (i <= m)	//剩余未比较部分直接塞进去
	
		temper[t] = arr[i];
		i++; t++;
	
	while (j <= e)
	
		temper[t] = arr[j];
		j++; t++;
	
	for (i = begin, t = 0; i <= end; i++, t++)	//放回去
	
		arr[i] = temper[t];
	


void mergesort(int* arr, int begin, int end)		//归并排序,fin变量用作临时储存排序好的数组

	if (begin < end)
	
		int mid = (begin + end) / 2;
		mergesort(arr, begin, mid);
		mergesort(arr, mid + 1, end);
		mergearr(arr, begin, mid, end);
	



int main()

	int i,j,n;
	int a[100];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	
		scanf("%d",&a[i]);
	
	mergesort(a,0,n-1);
	for(i=0;i<n;i++)
	
		printf("%d ",a[i]);
	
	printf("\\n");
	return 0;

以上是关于[算法]归并排序的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法笔记—— 归并排序

面试常用算法之排序

常用排序算法及java示例

常用排序算法及java示例

python数据结构与算法(17)

[Data Structure & Algorithm] 归并排序