选择排序
时间复杂度:O(N^2)
空间复杂度:O(1)
算法步骤
- 将数组划分为两部分,有序部分和无序部分
- 有序数组开始位置的下标为-1
- 取有序数组结尾,无序数组的第一个位作为第一个比较值,在剩余无序数组中找到最小的那一位
- 将最小位和第一位互换,依次遍历到最后一位
算法图解
代码实现
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;
}