选择排序
一种简单直观的排序算法;首先在未排序的序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾;以此类推,知道所有元素排序完毕
假设有一个无序序列 L0、L1、L2、…、Ln-1
- 初始无序序列 L0、L1、L2、…、Ln-1,有序序列为空
- 第i 趟排序,有序区为 L0、…、Li-2,无序区为 Li-1、…、Ln-1,该趟排序从无序区中选出最小的元素 Lm,将它与无序区的第 1 个元素 Li-1 交换
- 重复 2 步骤,n 趟结束后,序列有序
import java.util.Arrays; /** * @date 2020/8/20 11:04 */ public class TestSort { public static void main(String[] args) { int[] arr = {8, 2, 4, 12, 4, 10, 3, 11, 1}; System.out.println(Arrays.toString(arr)); int[] sort = bubbleSort(arr); System.out.println(Arrays.toString(sort)); } private static int[] selectSort(int[] arr){ for (int i = 0; i < arr.length; i++) { // 保存最小元素的索引 int min = i; for (int j = i + 1; j < arr.length; j++) { // 比较进行交换索引 if (arr[min] > arr[j]){ min = j; } } // 一次循环结束,找到最小元素,交换元素 int temp = arr[i]; arr[i] = arr[min]; arr[min] = temp; } return arr; } }