/*--------------------------------------------------------------------------------------------------------------------

    题目:输入10个数,将它们从小到大排列
    
    排序函数sort算法:将每一轮循环比较中最小的值,赋给array[k],再将array[k]中的值,按从小到大的顺序赋给array[0] ~ array[9]
    1.设定变量i从0-9增长,第一轮循环,是为array[0]赋值,第二轮循环,是为array[1]赋值
    2.设定变量k等于该轮中的i的数值,因为最后要进行数值交换,所以要设该变量
    3.设定变量j从0-9增长,控制每一轮比较都从i开始,到9结束,其中最小的值的[组号]赋给k,即最小值赋给array[k]
    每一轮循环中,array[k]始终为最小值,最后将这个最小值赋给array[i],array[k]重置
    
--------------------------------------------------------------------------------------------------------------------*/
#include <stdio.h>

void sort(int array[], int n)  // 定义一个排序函数,名为sort 
{
	int i,j,k,t;
	for (i = 0; i < n - 1; i++)
	{
		k = i;
		for (j = i + 1; j < n; j++)  // 选择法从小到大排序
		{ if (array[j] < array[k])  k = j; }  /* array[j] < array[k] 是数组中第j个数字和第k数字 比较大小
											   j从1-10,就表示从中挑选出数组中最小的数,将它的[组号]赋给k */
		
		if (k != j)  // 这里是将较小的数字,通过零时变量t,放到array[i]中(i从1-10)
		{
			t = array[i];
			array[i] = array[k];
			array[k] = t;
		}		
	}
}

int main()
{
	int a[10], i;
	
	printf ("请输入10个数字\n");
	
	for (i = 0; i < 10; i++)  // 输入10个数,反别放在a[0] - a[10] 中
		scanf ("%d", &a[i]);
		
	sort(a, 10);  // 调用排序函数sort,实参为数组a,10 对应形参 数组array,n
	
    for (i = 0; i < 10; i++)  // 输出a[0] - a[10] 中的数值
		printf ("%d ", a[i]);
		
	printf (" \n");

	return 0;
}

更多推荐

#C语言自学之路 函数的调用和数组的使用方式