美文网首页
选择排序

选择排序

作者: topshi | 来源:发表于2019-05-06 21:28 被阅读0次

    选择排序是一种简单直观的排序算法,它通过在未排序部分中选择最小(大)的元素,加入到已排序部分的末尾,依此类推,直到未排序部分为零。

    动画演示


    由动画可见,数组被分为两个部分,已排序和未排序,每次从未排序部分中选择最小的元素加到已排序部分的末尾,直至未排序部分为空,整个数组就只剩下已排序部分,则完成排序。

    算法描述

    • 两个循环,外循环指针表示已排序部分和未排序部分的分隔点;
    • 内循环遍历未排序部分,找到最小元素的下标,然后将最小元素和已排序部分的下一个元素交换,分割点后移一位。

    代码

        public void swap(int[] nums, int i, int j){
            int temp = nums[i];
            nums[i] = nums[j];
            nums[j] = temp;
        }
        public void sort(int[] nums) {
            for(int i = 0;i < nums.length;i++){
                int min = i;
                for(int j = i;j < nums.length;j++){
                    min = nums[min] > nums[j] ? j : min;
                }
                swap(nums, min, i);
            }
        }
    

    分析

    排序算法 时间复杂度
    (平均)
    时间复杂度
    (最坏)
    时间复杂度
    (最好)
    空间复杂度 稳定性
    选择排序 O(n^2) O(n^2) O(n^2) O(1) 不稳定

    相关文章

      网友评论

          本文标题:选择排序

          本文链接:https://www.haomeiwen.com/subject/vuljoqtx.html