描述
小明的老师布置了一份调查作业,小明想在学校中请一些同学一起做一项问卷调查,聪明的小明为了实验的客观性,想利用自己的计算机知识帮助自己。他先用计算机生成了Ñ个1到1000之间的随机整数(0 <N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入
输入有2行,第1行为1个正整数,表示所生成的随机数的个数:N
第2行有Ñ个用空格隔开的正整数,为所产生的随机数。
输出
输出也是2行,第1行为1个正整数男,表示不相同的随机数的个数。第2行为中号个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
样例输入
10 20 40 32 67 40 20 89 300 400 15
样例输出
8 15 20 32 40 67 89 300 400
算法实现
#include <stdio.h>
void KuaiPai(int a[],int low,int high);
int main()
{
int student,n,i,j;
scanf("%d",&n);
student=n;
int random[n];
for (i=0; i<n; i++) {
scanf("%d",random+i);
}
KuaiPai(random,0,n-1);
for (i=n-1; i>0; i--) {
if (random[i]==random[i-1]) {
for (j=i; j<n-1; j++) {
random[j]=random[j+1];
}
student--;
}
}
printf("%d\n",student);
for (i=0; i<student; i++) {
printf("%d ",random[i]);
}
return 0;
}
void KuaiPai(int a[],int low,int high)
{
int mid=a[low],t,l=low,r=high;
if (low>=high) {
return;
}
while (low<high) {
if (a[high]<a[low]) {
t=a[high];
a[high]=a[low];
a[low]=t;
}
if (mid==a[low]) {
high--;
} else {
low++;
}
}
KuaiPai(a, l, low-1);
KuaiPai(a, low+1, r);
}