好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

1150: 零起点学算法57——程序设计竞赛

1150: 零起点学算法57——程序设计竞赛

Time Limit: 1 Sec   Memory Limit: 64 MB   64bit IO Format: %lld
Submitted: 1303   Accepted: 742
[ Submit ][ Status ][ Web Board ]

Description

 

每年5月份,省里都要举行程序设计竞赛。
为了让最优秀的学生去参加比赛,我们一般需要做一个选拔工作。
现在你来帮老师完成这个任务哦。

 

Input

多组测试数据,每组数据一行,该行先输入一个整数n ( n <= 30),表示参加选拔的同学人数。然后是n个整数表示选拔成绩。

 

 

Output

 

对于每组测试数据,请在一行从高到低输出他们的成绩。

 

Sample Input

 

 4 2 6 7 1
3 4 10 9
 

 

Sample Output

 7 6 2 1
10 9 4
 

 

Source

零起点学算法

 

  1  #include<stdio.h>
  2   int   main(){
   3       int  n,a[ 50  ];
   4       while (scanf( "  %d  " ,&n)!= EOF){
   5           for ( int  i= 0 ;i<n;i++ ){
   6              scanf( "  %d  " ,& a[i]);
   7           }
   8          
  9           for ( int  i= 0 ;i<n- 1 ;i++ ){
  10               int  k= i,t;
  11               for ( int  j=i+ 1 ;j<n;j++ )
  12                   if (a[k]< a[j])
  13                     k= j;
  14               if (k!= i){
  15                  t= a[i];
  16                  a[i]= a[k];
  17                  a[k]= t;
  18               }
  19           }
  20           for ( int  i= 0 ;i<n- 1 ;i++ )
  21             printf( "  %d   "  ,a[i]);
  22          printf( "  %d\n  " ,a[n- 1  ]);
  23       }
  24       return   0  ;
  25  }

//选择排序法!!!

  1  #include<stdio.h>
  2   int   main(){
   3       int  n,a[ 50  ];
   4       while (scanf( "  %d  " ,&n)!= EOF){
   5           for ( int  i= 0 ;i<n;i++ )
   6             scanf( "  %d  " ,& a[i]);
   7      
  8       int   t;
   9       for ( int  i= 1 ;i<n;i++ ){
  10           for ( int  j= 0 ;j<n-i;j++ ){
  11               if (a[j]<a[j+ 1  ]){
  12                  t= a[j];
  13                  a[j]=a[j+ 1  ];
  14                  a[j+ 1 ]= t;
  15               }
  16           }
  17       }
  18      
 19       for ( int  i= 0 ;i<n- 1 ;i++ ){
  20          printf( "  %d   "  ,a[i]);
  21       }
  22      printf( "  %d\n  " ,a[n- 1  ]);
  23       }
  24      
 25       return   0  ;
  26  } 

// 冒泡排序法

#include<stdio.h>
 int   main(){
      int  n,a[ 50  ];
      while (scanf( "  %d  " ,&n)!= EOF){
          for ( int  i= 0 ;i<n;i++ )
           scanf(  "  %d  " ,& a[i]);
    
      int   t;
      for ( int  i= 1 ;i<n;i++ ){
          int  flag= 0  ;
          for ( int  j= 0 ;j<n-i;j++ ){
              if (a[j]<a[j+ 1  ]){
                t = a[j];
                a[j] =a[j+ 1  ];
                a[j + 1 ]= t;
                flag = 1  ;
            }
              if (flag== 0 )  break  ;
        }
    }
    
      for ( int  i= 0 ;i<n- 1 ;i++ ){
        printf(  "  %d   "  ,a[i]);
    }
    printf(  "  %d\n  " ,a[n- 1  ]);
    }
    
      return   0  ;
}  

//冒泡排序法 (改进后的)

查看更多关于1150: 零起点学算法57——程序设计竞赛的详细内容...

  阅读:56次