选择排序
思路
- 升序排列
- 给定一无序数组,将数组第一个元素的下标设为i,第二个元素的下标设为j。
- 从数组第二个元素开始往后遍历,遍历过程中逐一与数组第一个元素进行比较,若找到比第一个元素小的元素,则将该元素下标记录,并将该元素索引处的值换为下个与j索引值比较的目标,,一次循环后找到最小值的索引下标。
- 将最小值的索引所的值与第一个元素交换。
- 重复上述循环
具体排序过程如图所示:
代码实现
void selectSort(int* array, int length) {
for (int i = 0; i < length; i++)
{
int min = i;
for (int j = i+1; j < length; j++)
{
if(array[min]>arrat[j])
{
min=j;//记录当次循环最小值的小标
}
}
//如果min与i不相等,则说明最小值的下标改变,交换
if(min!=i)
{
swap(array[min], array[i]);//交换
}
}
}