基础算法-选择排序的理解与实现-Android版

选择排序: 通俗理解(从小到大排序),从需要排序的数组中找出最小值的角标,跟首位交换位置;依次类推,完成相关排序

代码实现与理解:

                int a[] = {5, 3, 9, 6, 2};
                for (int i = 0; i < a.length; i++) {
                    Log.i("chy选择排序==初始结果===", "====" + a[i]);
                }
                // 外层循环控制循环次数(如果a.length == 5, 则只需进行4次循环即可
                   最后的数字自然有序)
                for (int i = 0; i < a.length - 1; i++) {
                    /**
                     * 每趟排序中,获取最小值的索引(将此次需要排序的首位初始为最小值)
                     *  第一次 i=0,, min = 0;
                     *  第二次 i=1,   min = 1;
                     */
                    int min = i;
                    /**
                     * 内存循环通过比较获取最小值的位置角标,比较从i+1开始
                     * 第一次: min = 0 ; 比较a[1] 和 a[min],如果a[1] < a[min],
                     *       则将 min= 1;
                     * 依次类推。。。
                     */
                    for (int j = i + 1; j < a.length; j++) {
                        if (a[j] < a[min]) {
                            min = j;
                        }
                    }
                    /**
                     * 内存循环结束后,可知得到了最小的角标为 min
                     * 如果最小值不是本轮的首位,则进行将最小值换到前面来
                     * 即:如果 min 不是初始值 i, 那么就进行交换位置的操作
                     */
                    if (min != i) {
                        int temp = a[i];
                        a[i] = a[min];
                        a[min] = temp;
                    }
                }
                for (int i = 0; i < a.length; i++) {
                    Log.i("chy选择排序==结果输出===", "====" + a[i]);
                }

跟冒泡排序比较记忆:冒泡是结果放在最后,选择是结果放在最前

你可能感兴趣的:(移动开发)