sicily 1341. 明明的随机数

Description
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

Input
输入包含多个测试数据。
每个测试数据有2行,第1行为1个正整数,表示所生成的随机数的个数N,第2行有N个用空格隔开的正整数,为所产生的随机数。

Output
对每个测试数据输出2行。第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

 

先用选择排序进行排序,然后开一个新数组,把不重复的数字填进去,达到去重的目的,再输出。

View Code
  1 #include<stdio.h>
  2 #define MAX 500
  3 void selectionSort( int array[], int size );
  4 void swapInArray( int array[], int first, int second );
  5 void filter( const int array[], int size );
  6 void printArray( const int array[], int size );
  7 
  8 int main()
  9 {
 10     int array[MAX] = {0};
 11     int n;
 12     int i;
 13     
 14     while ( scanf( "%d", &n ) != EOF )
 15     {
 16         
 17         for ( i = 0; i < n; i++ )
 18         {
 19             scanf( "%d", &array[i] );
 20         }
 21         
 22         selectionSort( array, n );
 23         
 24         filter( array, n );
 25         
 26     }
 27         return 0;
 28 }
 29 
 30 void selectionSort( int array[], int size )
 31 {
 32     int i, j;
 33     int min;
 34     
 35     for ( i = 0; i < size - 1; i++ )
 36     {
 37         min = i;
 38         for ( j = i + 1 ; j < size; j++ )
 39         {
 40             if ( array[j] < array[min] )
 41             {
 42                 min = j;
 43             }
 44         }
 45         
 46         if ( i != min )
 47         {
 48             swapInArray( array, i, min );
 49         }
 50     }
 51     
 52     return;
 53 }
 54 
 55 void swapInArray( int array[], int first, int second )
 56 {
 57     int temp;
 58     
 59     temp = array[first];
 60     array[first] = array[second];
 61     array[second] = temp;
 62     
 63     return;
 64 }
 65 
 66 void filter( const int array[], int size )
 67 {
 68     int unique = 0;
 69     int i;
 70     int filteredArray[MAX] = {0};
 71     
 72     filteredArray[unique] = array[0];
 73     
 74     for ( i = 1; i < size; i++ )
 75     {
 76         if ( array[i] != filteredArray[unique] )
 77         {
 78             unique++;
 79             filteredArray[unique] = array[i];
 80         }   
 81     }
 82     
 83     unique++;
 84     
 85     printf( "%d\n", unique );
 86     
 87     printArray( filteredArray, unique );
 88     
 89     return;
 90 }
 91 
 92 void printArray( const int array[], int size )
 93 {
 94     int i;
 95     
 96     printf( "%d", array[0] );
 97     
 98     for ( i = 1; i < size; i++ )
 99     {
100         printf( " %d", array[i] );
101     } 
102     
103     printf("\n");
104     
105     return;
106 }
posted @ 2012-12-11 20:46  Joyee  阅读(657)  评论(0编辑  收藏  举报