hzCPPOJ

快排并二路归并排序

时间限制:  1 s      内存限制:   128 MB
提交:145     正确:102     分值:87

题目描述

定义快排函数,将两个数列分别进行排序;

重点:定义二路归并函数,将两个已有的有序数列合并成一个升序序列就比如有两个从低到高排好的队伍,要合并成一个,我们会怎么办?

此题为附加代码题,请根据下面代码续写,按照提示信息提交相关代码即可。

#include<iostream>
using namespace std;
const int MAXSIZE = 201;
void quicksort(int arr[], int left, int right);
void printArray(int arr[], int len);//输出长度为len的数组arr的每个元素
void mergeArray(int a[], int m, int b[], int n, int c[]);//将长度为m的数组a、长度为n的数组b合并到数组c中
int main(){
	int a[MAXSIZE] = {0}, b[MAXSIZE] = {0}, c[MAXSIZE] = {0};
	int m, n;
	cin >> m;
	for(int i= 1; i <= m; i++){
		cin >> a[i];
	}
	cin >> n;
	for(int i= 1; i <= n; i++){
		cin >> b[i];
	}
	quicksort(a, 1, m);
	printArray(a, m);
	
	quicksort(b, 1, n);
	printArray(b, n);
	
	mergeArray(a, m, b, n, c);
	printArray(c, m+n); 
}
//************提交此行以下的代码************************

    此处补充3个自定义函数的实现代码 

//************提交此行以上的代码************************


输入

输入分四部分:

第一行是正整数m;

第二行是m个用空格隔开的整数数列;

第三行是正整数n;

第四行是n个用空格隔开的整数数列
0<m, n<=100

输出

输出按样例

样例

样例输入:
5 3 66 9 8 18 8 56 12 8 4 69 6 19 87
样例输出:
5 3 8 9 18 66 8 4 6 8 12 19 56 69 87 13 3 4 6 8 8 9 12 18 19 56 66 69 87

提交人

AmberXie

来源/分类