数据结构与算法-选择排序

413 阅读1分钟

每次从一堆元素中找出最大的元素,然后和最尾部的元素交换,执行完一轮后最尾部的元素就是最大值,然后重复执行以上步骤。

快速排序过程

代码:

public static void sort(int[] array) {
        for (int end = array.length - 1; end > 0; end--) {
            int maxIndex = 0;
            for (int begin = 1; begin <= end; begin++) {
                if (array[begin] > array[maxIndex]) {
                    maxIndex = begin;
                }
            }
            int tmp = array[end];
            array[end] = array[maxIndex];
            array[maxIndex] = tmp;
        }
    }

总结:平均时间复杂度为O(n2),空间复杂度为O(1) 选择排序的交换次数远远少于冒泡排序(我的之前文章冒泡排序),平均性能优于冒泡排序。 其实选择排序还可以优化,使用二叉堆来查找最大值。 记得点赞哦!