package com.sort.admin;
public class SelectSort {
/**
* 选择排序 - O(n^2)
*
* 循环N次,每次循环里面将第一个数跟后面所有数相比较,找出最小值放在数组最前面
*
* <p>
* 0 ~ N-1 第一次从 0 ~ N-1 找出最小值
* 1 ~ N-1 第二次从 1 ~ N-1 找出最小值
* 2 ~ N-1 第三次从 2 ~ N-1 找出最小值
* ~
* N-2 ~ N-1 第 N-1 次从 N-2 ~ N-1 找出最小值
*
* 第一个for循环:控制循环次数
* 第二个for循环:找出每次中最小值放在前面
* </p>
*
* @param arr 需要排序的数组
*
*/
public static void sort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
// 从N个数选择最小的数放在前面,一共要选择N次,假设arr[0]是最小
for (int i = 0; i < arr.length - 1; i++) {
// 从N个数中找出最小值放在前面
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
swap(arr, i, j);
}
}
}
}
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void print(int[] arr) {
System.out.println("arr -- >");
for (int j : arr) {
System.out.print(j + " ");
}
System.out.println();
}
public static void main(String[] args) {
int[] arr = {3, 2, 7, 5, 1, 9, 9, 4, 6, 8};
print(arr);
sort(arr);
print(arr);
}
}
选择排序
- 本文链接: https://sly.plus/archives/selectsort
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议。转载请注明出处!