赞
踩
例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
不求点赞收藏,有错请指出,谢谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。