选择排序

117 阅读1分钟

选择排序

时间复杂度:O(N^2)

空间复杂度:O(1)


算法步骤

  • 将数组划分为两部分,有序部分和无序部分
  • 有序数组开始位置的下标为-1
  • 取有序数组结尾,无序数组的第一个位作为第一个比较值,在剩余无序数组中找到最小的那一位
  • 将最小位和第一位互换,依次遍历到最后一位

算法图解

7789414-5893f3ff1b915c38.gif

代码实现

 public static int[] sort(int[] arr) {
     int length = arr.length;
     for (int i = 0; i < length - 1; i++) {
         int min = i;
         for (int j = i + 1; j < length; j++) {
             min = arr[min] > arr[j] ? j : min;
         }
         swap(min, i, arr);
     }
     return arr;
 }