若它不是这组元素中的第一个(最后一个)元素,则将它与这组元素中的第一个(最后一个)元素交换....= i;
}
if (a[i] > a[maxi])
{
maxi = i;
}
}
Swap(&a[left], &a[mini]);
//如果left...和maxi重叠,交换后需要修正一下再交换right和maxi
if (left == maxi)
{
maxi = mini;
}
Swap(&a[right], &a[maxi...]);
left++;
right--;
}
}
注意:
当我们在一趟比较结束后选出mini和maxi并做交换的时候,要小心如果left记录的位置恰好存放的是maxi,则第一步交换...left和mini后我们就要重新对maxi的位置做一个修正,如图:
四.简单选择排序的时间复杂度分析
我们可以发现,简单选择排序的特点是:
元素挪动交换次数很少,但是元素比较次数很多,并且无论是数组天生顺序的情况还是天生逆序的情况