当前位置:网站首页>Merge sort ()

Merge sort ()

2022-06-11 02:08:00 Study hard 867

#include <bits/stdc++.h>
using namespace std;
int a[1000];
void merge(int left,int mid,int right){
	int result=right-left+1;
	int b[result];
	int n=0;
	int temp=left;// Be sure to save the original results 
	int end=right;// Save original right 
	int now=mid;
	while(left<now&&mid<=end){
		if(a[left]<=a[mid]){
			b[n++]=a[left];
			left++;
		}
		else {
			b[n++]=a[mid];
			mid++;
		}
	}
	while(left<now){
		b[n++]=a[left];
		left++;
	}
	while(mid<=end){
		b[n++]=a[mid];
		mid++;
	}
	n=0;
	int i;
	for(i=temp;i<=end;i++){
		a[i]=b[n++];
	}
	return ;
}
void mergesort(int left,int right){
	if(left==right)return ;
	int mid;
	mid=(left+right)/2;
	mergesort(left,mid);
	mergesort(mid+1,right);
	merge(left,mid+1,right);
}
int main(){
	int n;
	scanf("%d",&n);
	int i;
	memset(a,0,sizeof(a));
	for(i=0;i<n;i++){
		scanf("%d",&a[i]);
	}
	mergesort(0,n-1);
	for(i=0;i<n;i++){
		printf("%d ",a[i]);
	}
	system("pause");
	return 0;
}

原网站

版权声明
本文为[Study hard 867]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/03/202203020619437955.html