39 lines
1.3 KiB
Java
39 lines
1.3 KiB
Java
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;
|
|
for (int j = i + 1; j < nums.length; j++) {
|
|
if (nums[j] < nums[min]) {
|
|
min = j;
|
|
}
|
|
}
|
|
if (min != i) {
|
|
int temp = nums[i];
|
|
nums[i] = nums[min];
|
|
nums[min] = temp;
|
|
}
|
|
}
|
|
return nums;
|
|
}
|
|
}
|