3、用选择法对10个整数升序排序, 10个整数用scanf函数输入。
选择排序的思路为:设有10个元素a[1]-a[10],将a[1]与a[2]- a[10]比较,若a[1]比a[2]- a[10]都小,则不进行交换,即无任何操作。若a[2]- a[10]中有一个以上比a[1]小,则将其中最小的一-个(假设是a[i]) 与a[1]交换, 此时a[1]中存放了10个整数中最小的数。第2轮将a[2]与a[3]- a[10]比较,将剩下9个数中的最小者a[i]与a[2]交换,此时a[2]中存放的是10个整数中第二小的数。以此类推,共进行9轮比较, a[1]-a[10]就 已按由小到大的顺序存放了。
根据题目提示,进行了一个实现,供参考:
#include <stdio.h>
int main(void){
int num[10];
int i;
//获取10个整数到数组
for(i=0;i<10;i++){
printf("请输入第%d个整数:",i+1);
scanf("%d",&num[i]);
}
int j;
int temp;
//升序排序
for(i=0;i<9;i++){
for(j=i+1;j<10;j++){
//将数组下标为i的元素与下标为i+1到下标为9之间的数比较,如果前面的数比后面的大,则交换他们
if(num[i]>num[j]){
temp = num[i];
num[i]=num[j];
num[j]=temp;
}
}
}
//打印结果
for(i=0;i<10;i++){
printf("%d ",num[i]);
}
return 0;
}