简单选择排序也比较简单,不过效率比前面的未优化版的冒泡排序会略微高一些,下面我们看看简单选择排序的代码吧。
void SelectSort(int *arr,int length)
{
for (int i = 0; i < length-1; i++)
{
int min = i;
for (int j = i+1; j < length; j++)
{
if (arr[min] > arr[j])
{
min = j;
}
}
if (min != i)
{
swap(arr, min, i);
}
}
}
其实简单选择排序跟上一篇文章的冒泡排序1很像,唯一的区别就是简单选择排序用了一个min记录最小元素的序列号,待外循环执行完一次的时候,如果min!=i,则说明min的值有了改变,需要交换下标i和下标min元素的值。外循环每执行一次,就确保arr[i]是当前的最小值。
简单选择排序比冒泡排序1效率高的地方是,冒泡排序1的进行一次外循环的时候,可能会进行多次交换,而简单选择排序一次外循环最多进行一次交换。