双调序列

本文介绍了一种双调序列的生成方法。双调序列的定义是选取给定整数集合中的最大值和最小值交替输出,直到所有数都被使用。为了实现这一序列,首先对整数进行排序,然后使用两个指针i和j分别跟踪最大值和最小值,依次输出。在输出过程中,特别处理了序列长度为奇数的情况,确保所有数都能正确输出。
摘要由CSDN通过智能技术生成

G
题目描述
电脑组的童鞋们经常玩一些智力PK小游戏,某月某日,发源于小朋友又发明了一种新的序列:双调序列,所谓的双调呢主要是满足如下条件描述:

假定有n(n<=1000)个整数(都在long int范围内,即-2147483648~2147483647),双调序列的第一个数是n个整数中的最大数,第二个数是n个整数中的最小数,第三个数是n个数中的第二大数,第四个数是n个数中的第二小数……取过的数不能再取,依次类推,直到结束。

聪明的你听完描述就抿嘴笑了吧?那就请你用程序正确的帮他找出这n个数的双调序列。

输入格式
第1行为一个整数n。

接下来n行给出了题目中所述的n个整数,每行包含一个整数。

输出格式
有n行,每行为一个整数,是满足条件的双调序列

输入输出样例
输入 输出
5 10
10 -9
-1 3
3 -1
3 3
-9

说明/提示
对于100%的数据,n<=1000。

对于这道题,首先可以先用排序,然后依据题目要求用一个循环分别输出:一个循环,同时定义两个变量i, j,一个用来控制最大值,一个用来控制最小值,输出了a[j](最大值),就输出a[i](最小值),最后特别说明的是,这个输出适用于双数的情况,所以最后要特判一下是否是双数,如果不是,输出最中间的那个数。

#include<iostream>
using namespace std;

const int MAX = 10001;
long int a[MAX] = {
   0}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值