C语言(数组排序)

来源:百度知道 编辑:UC知道 时间:2024/05/31 19:02:15
请各位高手帮下忙,根据下面的图片流程图把这个程序写下来,这是教程上的后面也没说清楚,我主要是不明白为什么开头会有个n-2麻烦详细说明一下,谢谢!

#include<stdio.h>
void main()
{
int a[10]={45,6,3,86,43,45,12,56,34,76},k,n,i,index,b;
n=10;//数组定义了有10个,这样写好对照你的图来看
for(k=0;k<=n-2;k++)
/*选折排序只用排到倒数第二位就行了,所以-1,然后你这写的是to,
也就是<=,数组大小变下标-1,相加所以就是-2,
当然如果写的是k<的话就是k<n-1了*/
{
index=k;
for(i=k+1;i<=n-1;i++)
{
if(a[i]<a[index])
index=i;
}
b=a[index];
a[index]=a[k];
a[k]=b;
}
for(k=0;k<=n-1;k++)
printf("%d\n",a[k]);
}