排序——选择排序
1 /* 2 * 选择排序: 3 * 选择排序比冒泡排序的效率高。 4 * 高在交换位置的次数上。 5 * 选择排序的交换位置是有意义的。 6 * 循环一次,然后找出参加比较的这堆数据中最小的,拿着这个最小的值和最前面的数据“交换位置”。 7 * 参与比较的数据:3 1 6 2 5(这一堆参加比较的数据中最左边的元素下标是0) 8 * 第一次循环后的结果是:1 3 6 2 5 9 * 参与比较的数据:3 6 2 5(这一堆参加比较的数据中最左边的元素下标是1,下标是0的那个元素是1) 10 * 第二次循环后的结果是:2 6 3 5 11 * 参与比较的数据:6 3 5(这一堆参加比较的数据中最左边的元素下标是2) 12 * 第三次循环后的结果是3 6 5 13 * 参与比较的数据:6 5(这一堆参加比较的数据中最左边的元素下标是3) 14 * 第四次循环后的结果是:5 6 15 * 完成! 5条数据,循环四次 16 */ 17 public class Test03 { 18 public static void main(String[] args) { 19 // 定义排序数组 20 int[] arr = { 3, 1, 6, 2, 5 }; 21 for (int i = 0; i < arr.length - 1; i++) { 22 // 假设下标是0的数的值是最小的,也就是说第一个数就是最小的 23 int min = i; 24 // for循环进行判断,判断猜测是否正确 25 for (int j = i + 1; j < arr.length; j++) { 26 // 第二个数跟第一个数比较,如果第二个数更小,那第二个数的下标就是0,以此类推。 27 if (arr[j] < arr[min]) { 28 min = j; 29 } 30 } 31 // min是最小数的下标,如果第一个数不是最小的,就进行交换 32 if (min != i) { 33 int temp; 34 temp = arr[min]; 35 arr[min] = arr[i]; 36 arr[i] = temp; 37 } 38 } 39 for (int i = 0; i < arr.length; i++) { 40 System.out.println(arr[i]); 41 } 42 } 43 44 }