关于用选择法排序的问题,请教各位!
#include<stdio.h>int main()
{
void sort(int array[],int n);//声明函数
int a[10],i;
printf("enter array:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);//调用函数
printf("The sorted array:\n");
for(i=0;i<10;i++)
printf(" %d",a[i]);
printf("\n");
return 0;
}//主函数部分
void sort(int array[],int n)//定义函数
{
int i,j,t,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(array[j]<array[k])
k=j;
t=array[k];
array[k]=array[i];
array[i]=t;
}
}
函数的前半部分都能看懂,从if(array[j]<array[k])这不太明白,为什么要引进变量k呢,循环之后array[k]的值怎么判断呢。我是这么想的,比如三个数:3,2,2.5。第一次array[k]=array[0]=3,array[j]=array[1]=2,条件成立,所以k=1,t=2,array[k]=array[i]=array[0]=3,array[0]=2。此时变为2,3,2.5我是能理解的。但是第二次内循环,此时j=2,array[2]=2.5,array[k]=array[i]=3,也成立。那继续程序,k=j=2,t=2.5,array[k]=2,array[i]=2.5,变为了2.5,3,2不就出错了吗,对这里的逻辑不太理解,还请各位帮帮小白,谢谢大家!