[TOC]
## 选择排序
```java
/**
* 选择排序
* 第一次将最小的数值放到第一个位置 第一个位置 + 1
* 循环将最小的数值放到(第一个位置 + 1)的位置上
*
* @param arr int[]
* @return int[]
*/
private static int[] selectSort(int[] arr) {
for (int start = 0; start < arr.length; start++) {
int minIndex = start;
for (int i = start + 1; i <= arr.length - 1; i++) {
if (arr[i] < arr[minIndex]) {
minIndex = i;
}
}
int temp = arr[minIndex];
arr[minIndex] = arr[start];
arr[start] = temp;
}
return arr;
}
```
## 冒泡排序
```java
/**
* 冒泡排序
* @param arr int[]
* @return int[]
*/
private static int[] bubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j + 1] < arr[j]) {
arr[j + 1] ^= arr[j];
arr[j] ^= arr[j + 1];
arr[j + 1] ^= arr[j];
}
}
}
return arr;
}
```
## 插入排序
~~~java
/**
* 插入排序
* @param arr int[]
*/
public static void insertSort(@NotNull int[] arr) {
for (int i = 1; i < arr.length; i++) {
// 定义待插入的数
int insertVal = arr[i];
// arr[1] 前面的数的下标
int insertIndex = i - 1;
// 给insertVal找到插入的位置
// insertVal < arr[insertIndex] 待插入的数还没有找到适当的位置
// 需要将arr[insertIndex] 后移
while (insertIndex >= 0 && insertVal < arr[insertIndex]) {
arr[insertIndex + 1] = arr[insertIndex];
insertIndex--;
}
// 当退出while循环时,说明插入的位置找到,insertIndex + 1
arr[insertIndex + 1] = insertVal;
System.out.println("第" + i + "轮操作后");
System.out.println(Arrays.toString(arr));
}
}
~~~