LeetCode/com/zerroi/leetcode/sort/SelectionSort.java

39 lines
1.3 KiB
Java
Raw Normal View History

2024-03-03 20:08:28 +08:00
package com.zerroi.leetcode.sort;
/**
* 选择排序是一种简单直观的排序算法无论什么数据进去都是 O(n²) 的时间复杂度所以用到它的时候数据规模越小越好
* 唯一的好处可能就是不占用额外的内存空间了吧
* 1. 算法步骤
* 首先在未排序序列中找到最小元素存放到排序序列的起始位置
* 再从剩余未排序元素中继续寻找最小元素然后放到已排序序列的末尾
* 重复第二步直到所有元素均排序完毕
*/
public class SelectionSort {
public static void main(String[] args) {
Selection selection = new Selection();
int[] res = selection.selection(new int[]{2, 1, 9, 3, 10});
for (int re : res) {
System.out.println(re);
}
}
}
class Selection {
public int[] selection(int[] nums) {
for (int i = 0; i < nums.length - 1; i++) {
int min = i;
2024-03-03 20:08:28 +08:00
for (int j = i + 1; j < nums.length; j++) {
if (nums[j] < nums[min]) {
min = j;
2024-03-03 20:08:28 +08:00
}
}
if (min != i) {
int temp = nums[i];
nums[i] = nums[min];
nums[min] = temp;
}
2024-03-03 20:08:28 +08:00
}
return nums;
}
}