选择排序算法的实现思路类似于插入排序,即已排序区间+未排序区间
1.算法定义
选择排序是基于选择的排序,即每次需要选择元素进行排序
2.算法思想
(1)第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置
(2)然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。
(3)以此类推,直到全部待排序的数据元素的个数为零
来看看,选择排序原理示意图
3.代码实现
(1)首先来看一下,找最小元素的选择排序实现
有序区间+无序区间
关于有序区间和无序区间的边界问题,可以画个图自己分析一下(这块很不容易理解哦,建议画图)
//将未排序区间的最小值放到以排序区间的末尾
public static void selectSort(int[] array){
int n = array.length;
if(n <= 1){
return;
}else{
//有序区间:[0,i)无序区间:[i,n)
for(int i = 0;i < n-1;i++){
int minValueIndex = i;
//j = [有序区间后一个元素,无序区间的最后一个元素]
for(int j = i+1;j < n;j++){
if(array[j] < array[minValueIndex]) {
minValueIndex = j;
}
}
//交换
int temp = array[i];
array[i] = array[minValueIndex];
array[minValueIndex] = temp;
}
}
}
那看看我的图吧:i是从0开始遍历的,那么在刚开始时,有序区间为[0,i],那么无序区间就是[i,n).哈哈哈,其实理解起来也还好