选择排序的实现原理:从指定的n条记录中获取最大值或者最小值放在最开始位置,然后从第二个元素继续遍历取出剩余元素的最大值或者最小值,直到元素个数为0。
选择排序的时间复杂性分析:O(n2),排序时数据交换的次数比冒泡排序要少,所以n值较小时,选择排序比冒泡排序快。
选择排序的算法稳定性:选择排序会交换相等元素的位置,不是稳定性算法。
选择排序的java代码实现:
public class Selection{ public static void selectSort(Comparable[] arr){ for (int i = 0; i < arr.length - 1; i ++){ int minIndex = i; for (int j = i + 1; j < arr.length; j ++){ if (greater(arr[minIndex], arr[j])){ minIndex = j; } } exch(i, minIndex, arr); } } public static boolean greater(Comparable a, Comparable b){ return a.compareTo(b) > 0; } public static void exch(int i, int j, Comparable[] arr){ Comparable temp = arr[i]; arr[i] = arr [j]; arr[j] = temp; } public static void main(String[] args) { Integer[] arr = {1,2,5,4,3,10,2,4,7,8,9}; Selection.selectSort(arr); System.out.println(Arrays.toString(arr)); } }