排序算法之选择排序
思路:
选择排序是假定第一个位置上的数是最小的,赋给min和minIndex,然后将其余的数与它比较,如果找到更小的,就把min和minIndex替换掉。那么第一轮就将最小的值以及下标找到了,将最小值与arr[0]进行交换
依次下去,每一轮都将未排序中最小的往前面排,需要arr.length - 1轮
代码:
1 /** 2 * 选择排序 3 * @param arr 4 */ 5 public static void selectSort(int[] arr) { 6 if (arr == null || arr.length == 0) { 7 return; 8 } 9 //共arr.length - 1趟 10 for (int i = 0; i < arr.length - 1; i++) { 11 //假定第i个位置上的数是未排序中最小的 12 int min = arr[i]; 13 int minIndex = i; 14 //将min与剩下的数进行比较 15 for (int j = i + 1; j < arr.length; j++) { 16 //如果min不是未排序中最小的,那将更小的那个值赋给min 17 if (min > arr[j]) { 18 min = arr[j]; 19 minIndex = j; 20 } 21 } 22 //如果未排序中最小的值min不是arr[i],将arr[i]赋给arr[minIndex],将min赋给arr[i] 23 if (minIndex != i) { 24 arr[minIndex] = arr[i]; 25 arr[i] = min; 26 } 27 } 28 }