1.选择排序简单介绍
第 一 次 从 arr[0] ~arr[n-1]中 选 取 最 小 值 , 与 arr[0] 交 换 ,
第 二 次 从arr[1] ~arr[n-1] 中 选 取 最 小 值 , 与 arr [ 1 ] 交 换 ,
第 三 次 从 arr[2] ~arr[n-l]中 选 取 最 小 值 , 与 arr [2]交 换 ,
第 i 次 从 arr [i-1 ] ~ arr [ n 一 1 ] 中 选 取 最 小 值 , 与 arr [ i 一 1 ] 交 换 ,
第 n-l 次 从 arr[n-2] ~ arr[n-I]中 选 取 最 小 值 , 与 arr[ n-2] 交 换 ,
总 共 通 过 n -1 次 , 得 到 一 个 按 排 序 码 从 小 到 大 排 列 的 有 序 序 列 。
2.选择排序思路图解
3.代码
public class SelectSort { public static void main(String[] args) { int[] arr = {34,1,119,101}; SelectSort.selectSort(arr); } /** * 选择排序 * 做算法要将一个复杂算法拆分成多个简单问题后逐一解决 * @param arr */ public static void selectSort(int[] arr) { int minData = 0; int minIndex = 0; //arr.length - 1:最后一个数不需要比较 for (int i = 0; i < arr.length - 1; i++) { minData = arr[i];//假设第一个注为最小数 minIndex = i;//最小数的索引 //int j = i + 1:假设的最小数arr[i]要跟它的下一个数去比较 for (int j = i + 1; j < arr.length; j++) { if (minData > arr[j]) { //重置最小数和其索引 minData = arr[j]; minIndex = j; } } //将最小值放在第i此的最小值位置 arr[minIndex]=arr[i]; arr[i] = minData; System.out.println(Arrays.toString(arr)); } } }