/*--------------------------------------------------------------------------------------------------------------------
题目:输入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语言自学之路 函数的调用和数组的使用方式
发布评论