选择排序
```java
public class ChoiceSort {
public static void main(String[] args) {
int [] arr = {1, 77, 21, 8, -1, 9, -1, -1};
sort(arr); // 调用方法
listArr(arr);// 排序后遍历
}
// 排序方法, 先寻找最小的值和该值的索引,之后将最小值放在数组第一位,第一位的值与最小值原来位置交换,
private static void sort(int [] arr){
// 定义初始索引
int min_dex = 0;
int min = 0;
// 只需要排序数组长度减1次, 每次排序, 将已经找到的最小值去除, 只对后面除最小值后面的数据进行排序
for (int i = 0; i < arr.length - 1; i++) {
// 初始索引
min_dex = i;
// 假设初始值
min = arr[min_dex];
// 每次寻找在原来的数组基础上后移一个索引, 因为假设了i位值为目前的最小值
for (int j = i + 1; j < arr.length; j++) {
// 寻找最小值和最小索引
if (min > arr[j]) {
min = arr[j];
min_dex = j;
}
}
// 初始所有没有改变则不需要执行交换
if (min_dex != i){
arr[min_dex] = arr[i];
arr[i] = min;
}
}
}
// 遍历数组
private static void listArr(int [] arr){
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
}