例7-5 原题:选择排序法。输入一个正整数n(1<n<=10),再输入n个整数,用选择法将它们从小到大排序后输出。
课本给出源程序及我的理解
//选择排序法
#include<stdio.h>
int main()
{
int i,index,k,n,temp;
//依次输入用到i,中间量index,从第一项到倒数第二项的k,输入个数n,交换用到中间变量temp
int a[10]; //定义一个长度为10的数组
printf("Enter n: ");//提示输入数字个数
scanf("%d",&n);//获取输入数字n
printf("Enter %d integers: ",n);//提示输入数字
for(i=0;i<n;i++)
scanf("%d",&a[i]);//将数字输入并存入数组中
for(k=0;k<n-1;k++)//从第一项到倒数第二项,不断地比较 交换
{
index=k;//使下标等于k,因为是一个变量,所以不直接用k
//而在比较中,前面已经摆好的数不用再参加比较
for(i=k+1;i<n;i++)//i是k的后一项,一直比较到最后一项
if(a[i]<a[index])//如果后项小于前项
index=i;//记录下较小的那个数,不断地改变i,不断地比较,找出最小的那个数
temp=a[index];//找出最小的数后,将这个数和a[k]交换
a[index]=a[k];
a[k]=temp;
}
printf("After sorted: ");//打印出交换后的数组
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");//换个行,看着美观
return 0;
}
课本测试数据
5
3 5 2 8 1
运行结果:
1 2 3 5 8
不求点赞收藏,有错请指出,谢谢!