2612: 分治策略-合并排序
金币值:3
定数:6
时间限制:1.000 s
内存限制:128 M
正确:3
提交:4
正确率:75.00% 命题人:
题目描述
已知一个无序的整数序列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个整数,每两个整数之间用空格隔开
第2行输入n个整数,每两个整数之间用空格隔开
输出格式
第3行输出有序列的n个整数,每两个整数之间用一个空格隔开。
输入样例 复制
5
3 2 4 1 5
输出样例 复制
1 2 3 4 5