//函数fun的功能是:将n个无序整数从小到大排序。
//冒泡排序法:小数往下浮,大数往上浮。把数都存到一个数组,然后两两比较,大数往后交换。双层递减循环。
//第二种方法:都放入一个数组中,然后记录第一个数的下标,它为最小的数,然后依次比较,遇见比这个数小的就交换位置,最后第一位就为所有数中最小的,然后把第二位作为次小数,再依次和后面数作比较。
//重难点:使用指针输出数组,控制一行输出的个数,对数组中数进行排序的方法。
#include <stdio.h>
#include <stdlib.h>
void fun ( int n, int *a )
{ int i, j, p, t;
for (j = ; j < n; j++)//采用第二种方法
{ p = j;//记录第一个数为最小数。
/************found************/
for (i = j; i <= n - ; i++)
if (a[p] > a[i])
/************found************/
p = i;//重新定义p的值。
if ( p!=j )
{ t = a[j]; a[j] = a[p]; a[p] = t; }
}
}
void putarr( int n, int *z )//按序输出数组函数
{ int i;
for ( i = ; i <= n; i++, z++ )
{ printf( "%4d", *z );
if ( !( i% ) ) printf( "\n" );//控制一行输出的个数为10个。(i%10=0时,这句代码执行。)
} printf("\n");
}
main()
{ int aa[]={,,,,,,,,,,}, n=;
printf( "\n\nBefore sorting %d numbers:\n", n ); putarr( n, aa );
fun( n, aa );
printf( "\nAfter sorting %d numbers:\n", n ); putarr( n, aa );
}
使用第一种方法:更改fun函数为:
void fun ( int n, int *a )
{
int i, j, p, t;
for (j = ; j < n; j++)//采用第二种方法
{
for (i = j; i <n; i++)
if (a[j] > a[i])
{
t = a[j]; a[j] = a[i]; a[i] = t;
}
}
}