1141:筛排处理
Description
明明想在学校中请一些同学一起做一项问卷调查,为了试验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N<=100),对于其中重复的数字,只保留一个,把其中相同的数字去掉。不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
Input
每组输入数据的第一行含有一个正整数N ,表示后面行有N个随机整数。若N=0,表示处理结束。
Output
对应每组输入数据,输出一组数据,该数据由单独一行开头,内含一个N,表示后面有N个排好序的整数,整数之间空一格。每组输出数据之间空一行。
Sample Input
12
2 4 6 17 20 40 43 45 60 64 85 98
17
35 75 40 61 56 21 85 61 50 83 52 22 44 68 51 80 38
0
Sanmple Output
12
2 4 6 17 20 40 43 45 60 64 85 98
16
21 22 35 38 40 44 50 51 52 56 61 68 75 80 83 85
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int N,i,a[100000];
while(1==scanf("%d",&N))
{
if(N==0)
return 0;
for(i=0; i<N; i++)
cin>>a[i];
int index,temp,j,count=0,shabi;
for(i=0; i<N-1; i++)
{
for(j=i+1; j<N; j++)
{
if(a[i]==a[j])
a[j]=-1;
}
}
for(i=0; i<N-1; i++)
{
index=i;
for(j=i+1; j<N; j++)
{
if(a[index]>a[j])
index=j;
}
if(i!=index)
{
temp=a[index];
a[index]=a[i];
a[i]=temp;
}
}
for(i=0; i<N; i++)
{
if(a[i]!=-1)
count++;
}
cout<<count<<endl;
for(i=0; i<N; i++)
{
if(a[i]!=-1)
{
shabi=i;
break;
}
}
cout<<a[shabi];
for(i=shabi+1; i<N; i++)
{
if(a[i]!=-1)
cout<<" "<<a[i];
}
cout<<endl;
cout<<"\n";
}
return 0;
}