选择排序
介绍
选择排序是一种简单直观的排序算法,无论什么数据进去都是 O ( n ² ) O(n²) O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。
步骤
- 每次循环得到一个最小值,并将最小值与原首元素交换
- 重复上述循环n次得到有序数组
演示
推荐排序算法动态调试、演示网站: https://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html
图片来源于:https://www.runoob.com/w3cnote/selection-sort.html
代码与思想
/**
* TODO 选择排序
*
* @author nanfeng
* @date 2022/03/24/ 17:16
*/
public class SelectionSort {
public static void main(String[] args) {
int[] nums = new int[]{711,42,333,6,7555,85,93,24,30,177};
selectionSort(nums);
System.out.println(Arrays.toString(nums));
}
static void selectionSort(int[] nums) {
// 每次循环得到一个最小值,将最小值放置在首位置 i
for (int i = 0; i < nums.length; i++) {
// 最小值初始值
int min = i;
// 记录最小值
for (int j = i+1; j < nums.length; j++) {
if(nums[min]>nums[j]) min = j;
}
// 将最小值与目前首位元素交换位置
if (min != i) {
int temp = nums[min];
nums[min] = nums[i];
nums[i] = temp;
}
}
}
}