选择排序(Selection Sort)是一种简单的排序算法。它的工作原理是每次从未排序的元素中选出最小(或最大)的一个元素,存放到排序序列的末尾。
我们可以实现选择排序算法如下:
public void selectionSort(int[] nums) {
for (int i = 0; i < nums.length; i++) {
int minIndex = i;
for (int j = i + 1; j < nums.length; j++) {
if (nums[j] < nums[minIndex]) {
minIndex = j;
}
}
swap(nums, i, minIndex);
}
}
private void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
算法流程:
- 找到未排序数组中最小值的元素下标。
- 与未排序的第一个元素交换。
- 重复步骤1-2,选择出下一个最小值,直到排序完成。
时间复杂度O(n2),空间复杂度O(1)。
所以,选择排序的关键是:
- 在未排序数组中找到最小值元素的下标。
- 最小值元素与未排序第一个元素交换。
- 重复步骤1-2,选择最小元素并交换,直到排序完成。
通过不断选择最小的元素与交换,最终实现数组的完全排序。