剑网3账号查询角色:请帮我编一下这道C语言题,谢谢了!

来源:百度文库 编辑:高校问答 时间:2024/04/30 13:06:55
在主函数中输入10个整数,用另一用户自定义函数fun()对他们进行排序,然后在主函数中输出排好的字符串。要求fun() 函数的功能是选择法排序。

选择法排序利用了求数组中最小值及其位置的算法。首先从n 个数中找出最小值,放在第一个元素位置上,再从剩下的n-1个数中找出最小值,放在第二个元素位置上,这样不断重复下去,直到剩下最后一个数。具体操作如下:
第一次选择:
第一步 从a[0]-a[9]中找最小值min及下标pos:min=0,pos=5
第二步 交换a[0]与最小值a[5]的值
第一次结束后a[0]已存放了最小值,下一次比较就不必再经过它,而从a[1]开始了

在第六次比较a[8]、a[9]后,发现已经是先后顺序,所以不用交换了。从例中可以看出10个元素要进行九次比较,由此可知,n个元素要进行n-1次比较。

例.用选择法对数组排序。
#include<stdio.h>
#define SIZE 10
main()
{
int a[SIZE]={3,8,7,6,5,0,
1,2,9,4};
int min,pos;
int i,j;
printf("数组中原存放数据是:\n");
for(i=0;i<SIZE;i++)
printf("%3d",a[i]);
for(i=0;i<SIZE-1;i++)
{
min=a[i];
pos=i;
for(j=i+1;j<SIZE;j++)
if(a[j]<min)
{
min=a[j];
pos=j;
}
a[pos]=a[i];
a[i]=min;
printf("\n经过第%d次排序后,数组变为:\n",i+1);
for(j=0;j<SIZE;j++)
printf("%3d",a[j]);
}
}