先找出最大或最小的,然后找出剩余最大或最小的 依次排放即可
public static void main(String[] args) {int[] arr = {1, 3, 5, 7, 8, 3, 4, 6, 0};System.out.println("first "+Arrays.toString(chooseSortFirst(arr)));System.out.println("second "+Arrays.toString(chooseSortSecond(arr)));}/*** 思路:* 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。* 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。** @param arr 待排序数组* @return arr 从小到大有序数组*/public static int[] chooseSortFirst(int[] arr) {if (arr != null && arr.length > 0) {/*** -1 reason* i = arr.length -1* - j = arr.length* 循环终止** i = arr.length -2* - j = arr.length -1 arr[arr.length -2] compareTo arr[arr.length -1]**/for (int i = 0; i < arr.length - 1; i++) {int minIndex = i;for (int j = i + 1; j < arr.length; j++) {minIndex = arr[minIndex] < arr[j] ? minIndex : j;}if (minIndex != i) {int temp = arr[i];arr[i] = arr[minIndex];arr[minIndex] = temp;}}}return arr == null ? new int[]{} : arr;}public static int[] chooseSortSecond(int[] arr) {if (arr != null && arr.length > 0) {for (int i = 0; i < arr.length - 1; i++) {for (int j = i + 1; j < arr.length; j++) {if (arr[i] > arr[j]) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}}return arr == null ? new int[]{} : arr;}// 输出结果first [0, 1, 3, 3, 4, 5, 6, 7, 8]second [0, 1, 3, 3, 4, 5, 6, 7, 8]
