//函数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 }