排序——选择排序

 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 }

 

posted @ 2020-05-21 16:14  1998青年  阅读(158)  评论(0编辑  收藏  举报