# 选择排序代码演示
# 视频教程
建议快进播放。
参考代码:
import java.util.Arrays;
public class Solution {
public int[] sortArray(int[] nums) {
int len = nums.length;
// 循环不变量:[0..i) 有序,且该区间里所有元素就是最终排定的样子
for (int i = 0; i < len - 1; i++) {
// 选择区间 [i..len - 1] 里最小的元素的索引,交换到下标 i
int minIndex = i;
for (int j = i + 1; j < len; j++) {
if (nums[j] < nums[minIndex]) {
minIndex = j;
}
}
swap(nums, i, minIndex);
}
return nums;
}
private void swap(int[] nums, int index1, int index2) {
int temp = nums[index1];
nums[index1] = nums[index2];
nums[index2] = temp;
}
public static void main(String[] args) {
int[] nums = {5, 2, 3, 1};
Solution solution = new Solution();
int[] res = solution.sortArray(nums);
System.out.println(Arrays.toString(res));
}
}
复杂度分析:
- 时间复杂度:
,这里 是数组的长度; - 空间复杂度:
,使用到常数个临时变量。
作者:liweiwei1419 链接:https://suanfa8.com/basic-sorting-algorithm/selection/code 来源:算法吧 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。