C语言选择排序法的的困惑

运行没有达到想要的结果,哪里出错了图片说明

k!=i,交换,这个要写在循环的外面。

请问你的困惑是什么?

这样改改就可以了。
图片说明

把 if(k!=i) 这个判断块放到第一层的for里,而不是第二层的for里。
选择排序是每次找出一个最大或者最小值,第二个for只是找出那个值就可以了,交换要放到第一层for里进行。

 void select_sort(int*a,int n)
{
    register int i,j,min,t;
    for(i=0;i<n-1;i++)
    {
        min=i;//查找最小值
        for(j=i+1;j<n;j++)
            if(a[min]>a[j])
                min=j;//交换
        if(min!=i)
        {
            t=a[min];
            a[min]=a[i];
            a[i]=t;
        }
    }
}

for(i = 0; i < n - 1; i++)
for(j = i + 1; j < n; j++)
if(a[i] > a[j]) { t = a[j]; a[j] = a[i]; a[i] = t; }