第二章 数据排序
【上机练习】
1、明明的随机数(Noip2006)
【问题描述】
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到
1000 之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对
应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明
完成“去重”与“排序”的工作。
【输入文件】
输入文件 random.in 有 2 行,
第 1 行为 1 个正整数,表示所生成的随机数的个数:N
第 2 行有 N 个用空格隔开的正整数,为所产生的随机数。
【输出文件】
输出文件 random.out 也是 2 行,第 1 行为 1 个正整数 M,表示不相同的随机数的个数。第 2 行为 M 个
用空格隔开的正整数,为从小到大排好序的不相同的随机数。
【输入样例】
10
20 40 32 67 40 20 89 300 400 15
【输出样例】
8
15 20 32 40 67 89 300 400
2、车厢重组(carry)
【问题描述】
在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的
长度最多能容纳两节车厢,如果将桥旋转 180 度,则可以把相邻两节车厢的位置交换,用这种方法可以重
新排列车厢的顺序。于是他就负责用这座桥将进站的车厢按车厢号从小到大排列。他退休后,火车站决定
将这一工作自动化,其中一项重要的工作是编一个程序,输入初始的车厢顺序,计算最少用多少步就能将
车厢排序。
【输入文件】
输入文件有两行数据,第一行是车厢总数 N(不大于 10000),第二行是 N 个不同的数表示初始的车厢
顺序。
【输出文件】
一个数据,是最少的旋转次数。
【输入样例】
4
4 3 2 1
【输出样例】
6
3、众数(masses)
【问题描述】
由文件给出N个1到30000 间无序数正整数,其中 1≤N≤10000,同一个正整数可能会出现多次,出
现次数最多的整数称为众数。求出它的众数及它出现的次数。
【输入格式】
输入文件第一行是正整数的个数 N,第二行开始为 N 个正整数。