一.选择排序基本思路
选择排序的基本方法分为以下几步:
第一步:将所需排序的区间分为有序区间和无序区间
第二步:从无序区间中选出一个最大(最小)的元素,存放在无序区间的最后(或最前)
第三步:遍历无序区间的所有元素,重复第二步,直到无序区间的元素全部插入到有序区间中,排序结束。
该排序算法较简单 图解略
二.选择排序代码(Java)
import java.util.ArrayList;
import java.util.Arrays;
public class SelectSort {
public static void main(String[] args) {
int[] array = {9,13,12,3,0,3,21};
selectSort(array);
System.out.println(Arrays.toString(array));
}
private static void selectSort(int[] array) {
//基本思路:从无序区间中选出最大的一个数放在有序区间的最前面
for (int i = 0; i < array.length - 1; i++) {
/*
无序区间:[0,array.length-i) 从这里选出最大的元素
有序区间:[array.length-i,array.length) 在这里的最前面插入最大的元素
*/
int max_index = 0; //默认第一个元素最大
for(int j = 0; j < array.length - i; j++){ //通过遍历无序区间,选出最大的元素
if(array[j]>array[max_index]) {
max_index = j;
}
}
swap(array,max_index,array.length-i-1); //将当前无序区间最大的元素放入有序区间的第一个元素处
}
}
private static void swap(int[] array, int max_index, int i) {
int t = array[max_index];
array[max_index] = array[i];
array[i] = t;
}
}
三.复杂度分析
由于选择排序算法对数据最开始的顺序不敏感,因此: