|
发表于 2019-3-18 16:17:03
|
显示全部楼层
本帖最后由 jackz007 于 2019-3-18 16:22 编辑
用 sort() 函数按从大到小排序,然后,取前 n 个即可
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- void random(int array[] , const int n)
- {
- int c , k , m ;
- bool f ;
- srand(time(0)) ;
- for(k = 0 ; k < n ; k ++) array[k] = 0 ;
- m = 0 ;
- while(m < n) {
- c = rand() % n + 1 ;
- f = true ;
- if (m) {
- for(k = 0 ; k < m ; k ++) {
- if (array[k] == c) {
- f = false ;
- break ;
- }
- }
- }
- if (f) array[m ++] = c ;
- }
- }
- void sort(int array[] , const int m)
- {
- int d , i , j ;
- for(i = 1 ; i < m ; i ++) {
- j = i ;
- while(j > 0 && array[j - 1] < array[j]) {
- d = array[j - 1] ;
- array[j - 1] = array[j] ;
- array[j] = d ;
- j -- ;
- }
- }
- }
- main(void)
- {
- int a[5000] , i , n ;
- random(a , 5000) ;
- n = 50 ;
- printf("%4d" , a[0]) ;
- for(i = 1 ; i < n ; i ++) {
- if(! (i % 10)) printf("\n%4d" , a[i]) ;
- else printf(" , %4d" , a[i]) ;
- }
- printf("\n\n") ;
- sort(a , 5000) ;
- printf("%4d" , a[0]) ;
- for(i = 1 ; i < n ; i ++) {
- if(! (i % 10)) printf("\n%4d" , a[i]) ;
- else printf(" , %4d" , a[i]) ;
- }
- printf("\n") ;
- }
复制代码 |
|