问题 3070 --大小排序(程序填空)

3070: 大小排序(程序填空)★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 307  解决: 199
[提交][状态][命题人:]

题目描述

输入n(0~50)个整数,把最小的元素放到中间位置,再把第二小的元素放到中间的后一个位置,然后把第三小的元素放到中间的前一个位置,以此类推。


#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
	int n,k,pos,m,a[55];
	cin>>n;
	m=______(1)________
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++)
		if(a[i]<a[m]) swap(a[i],a[m]);
	int p=m,q=m;
	for(int i=1;i<=n-2;i++)
	{
		if(i%2==1)
		{
			k=q+1;
			q++;
		}
		else
		{
			_____(2)________;
			p--;
		}
		______(3)_______;
		for(int j=1;j<=n;j++)
			if((_____(4)______)&&a[j]<a[k]) k=j;
		if(pos!=k) swap(a[pos],a[k]);
	}
	for(int i=1;i<=n;i++) cout<<a[i]<<" ";
}


输入

两行数据,第一行为数据总数n(0~50),第二行为n个数据

输出

排序好的数据(用空格分开)

样例输入
Copy
9
72 61 3 95 39 38 64 65 98
样例输出
Copy
98 72 64 39 3 38 61 65 95

提示

来源

[提交][状态]