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; }