首页 > 编程语言 > 详细

归并排序

时间:2020-02-28 09:05:30      阅读:57      评论:0      收藏:0      [点我收藏+]

复杂度:O(nlogn)

一种稳定的排序算法,分治思想

#include<bits/stdc++.h>

using namespace std;

int a[500],t[500];

void merge(int l,int r){
	if(l == r) return;
	int mid = (l+r)/2;
	merge(l,mid);
	merge(mid+1,r);
	int i = l,j = mid+1,k = l;
	while(i<=mid&&j<=r){
		if(a[i] <= a[j]){
			t[k++] = a[i++];
		}else{
			t[k++] = a[j++];
		}
	}
	while(i<=mid) t[k++] = a[i++];
	while(j<=r) t[k++] = a[j++];
	for(int i=l;i<=r; i++){
		a[i] = t[i];
	}
}

int main(){
	int n;
	cin >> n;
	for(int i=1; i<=n; i++){
		cin >> a[i];
	}
	merge(1,n);
	for(int i=1; i<=n; i++){
		cout << a[i] << " ";
	}
	return 0;
}

  

求逆序对:洛谷P1908

 

归并排序

原文:https://www.cnblogs.com/zhangqiling/p/12375463.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!