计算机二级-C语言-程序修改题-190116记录-对数组进行排序的两种方法。

//函数fun的功能是:将n个无序整数从小到大排序。

//冒泡排序法:小数往下浮,大数往上浮。把数都存到一个数组,然后两两比较,大数往后交换。双层递减循环。

//第二种方法:都放入一个数组中,然后记录第一个数的下标,它为最小的数,然后依次比较,遇见比这个数小的就交换位置,最后第一位就为所有数中最小的,然后把第二位作为次小数,再依次和后面数作比较。

//重难点:使用指针输出数组,控制一行输出的个数,对数组中数进行排序的方法。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 void fun ( int  n, int  *a )
 4 {  int  i, j, p, t;
 5 for (j = 0; j < n; j++)//采用第二种方法
 6    {  p = j;//记录第一个数为最小数。
 7 /************found************/
 8    for (i = j; i <= n - 1; i++)
 9        if (a[p] > a[i])
10            /************found************/
11            p = i;//重新定义p的值。
12     if ( p!=j )
13     { t = a[j]; a[j] = a[p]; a[p] = t; }
14   }
15 }
16 void putarr( int  n,  int  *z )//按序输出数组函数
17 {  int  i;
18   for ( i = 1; i <=  n; i++, z++ )
19   {  printf( "%4d", *z );
20     if ( !( i%10 ) )  printf( "
" );//控制一行输出的个数为10个。(i%10=0时,这句代码执行。)
21   } printf("
");
22 }
23 main()
24 {  int  aa[20]={9,3,0,4,1,2,5,6,8,10,7}, n=11;
25    printf( "

Before sorting %d numbers:
", n ); putarr( n, aa );
26    fun( n, aa );
27    printf( "
After sorting %d numbers:
", n ); putarr( n, aa );
28 }

使用第一种方法:更改fun函数为:

 1 void fun ( int  n, int  *a )
 2 {  
 3     int  i, j, p, t;
 4     for (j = 0; j < n; j++)//采用第二种方法
 5     {
 6         for (i = j; i <n; i++)
 7             if (a[j] > a[i])
 8             {
 9                 t = a[j]; a[j] = a[i]; a[i] = t;
10             }
11     }
12 }