SHAOXIAOJ正在加载中...

2612: 分治策略-合并排序

金币值:3 定数:6 时间限制:1.000 s 内存限制:128 M
正确:3 提交:4 正确率:75.00% 命题人:
点赞量:0 收藏量:0 题目类型:程序 知识点: 算法设计

题目描述

已知一个无序的整数序列a1,a2,...an(每个元素互不相同,n<=10),要求将其排列成一个有序的序列,用合并排序的递归方法实现。

测试代码   复制

#include<stdio.h>

// 合并排序
void copy(int a[],int b[],int left,int right) {
	while(left<=right) {
		a[left]=b[left];
		left++;
	}
}

void merge(int a[],int left,int mid,int right) {
	int b[10];
	int i=left;
	int j=mid+1;
	int k=left;
	while(i<=mid && j<=right) {

	}
	if(i<=mid)
		while(i<=mid) {

		}
	else if(j<=right)
		while(j<=right) {

		}
	copy(a,b,left,right);
}

void mergeSort(int a[],int left,int right) {
	if(left<right) {
		int mid=(left+right)/2;
		mergeSort(a,left,mid);
		mergeSort(a,mid+1,right);
		merge(a,left,mid,right);
	}
}

int main(void) {
	int a[10],i,n;
	scanf("%d",&n);
	for(i=0; i<=n-1; i++) scanf("%d",&a[i]);
	mergeSort(a,0,n-1);
	for(i=0; i<=n-1; i++)
		if(i<n-1)printf("%d ",a[i]);
		else printf("%d\n",a[i]);
	return 0;
}

输入格式

第1行输入一个正整数n,表示无序序列中的元素个数
第2行输入n个整数,每两个整数之间用空格隔开

输出格式

第3行输出有序列的n个整数,每两个整数之间用一个空格隔开。

输入样例    复制

5
3 2 4 1 5

输出样例    复制

1 2 3 4 5