算法面试题 选择排序

67 阅读1分钟

上一篇文章讲到了冒泡排序,选择排序其实跟冒泡排序差不多,也是比较两个数的大小,然后交换他们的位置,不同的是冒泡排序比较的是相邻两个元素的大小,而选择排序是选中一个元素,比较他和数组内所有的元素,最终将比较后的值放在他该在的位置,还是直接上代码.

public class ArithmeticTest {
    /**
     * 选择排序
     */
    public static void main(String[] args) {
        int[] dest = new int[]{12, 3, 11, 56, 37, 9, 28};
        printArray(dest);
        System.out.println("---------------------");
        int[] result = chooseSort(dest);
        printArray(result);
    }

    private static int[] chooseSort(int[] nums) {
        if (nums.length == 0) {
            return nums;
        }
        //循环遍历数组长度,从索引为0 开始
        for (int i = 0; i < nums.length; i++) {
            //最小数的索引,每次循环总认为第一个数最小
            int minIndex = i;
            for (int j = i; j < nums.length; j++) {

                if (nums[j] < nums[minIndex]) {
                    //将索引赋值
                    minIndex = j;
                }
            }
            System.out.println("最小数:" + nums[minIndex]);
            //交换位置
            int temp = nums[minIndex];
            nums[minIndex] = nums[i];
            nums[i] = temp;
            printArray(nums);
            System.out.println("-------------------");
        }

        return nums;
    }

    private static void printArray(int[] dest) {
        for (int i = 0; i < dest.length; i++) {
            System.out.print(dest[i] + "  ");
        }
        System.out.println(" ");
    }


}

打印结果,是依次找出最小数的

image.png