直接选择排序(选择排序)

一、算法实现
  • 基本实现
/**
 * 直接选择排序(选择排序)
 */
public static int[] sortSelect(int[] arr) {
    int i, j, temp, min;
    for (i = 0; i < arr.length - 1; i++) {
        min = i;
        for (j = i + 1; j < arr.length; j++) {
            if (arr[min] > arr[j]) {
                min = j;
            }
        }
        if (i != min) {
            temp = arr[i];
            arr[i] = arr[min];
            arr[min] = temp;
        }
    }
    return arr;
}
二、运行示例

{20, 15, 10, 12}
[【10】, 15, 20, 12] //--> 找出第一小的数与在[0]位置的数交换
10, [【12】, 20, 15] //--> 找出第二小的数与在[1]位置的数交换
10, 12, [【15】, 20] //--> 找出第三小的数与在[2]位置的数交换

三、性能分析
  • 时间复杂度

平均时间复杂度为O(n^2)

  • 空间复杂度

空间复杂度为O(1)

  • 稳定性

是不稳定的排序算法

原文:经典排序算法(6)——直接选择排序算法详解

你可能感兴趣的:(直接选择排序(选择排序))