排序算法---选择排序

1.实现流程: 

1. 把第一个没有排序过的元素设置为最小值;

2. 遍历每个没有排序过的元素;

3. 如果元素 < 现在的最小值;

4. 将此元素设置成为新的最小值;

5. 将最小值和第一个没有排序过的位置交换

选择排序执行流程

2.代码实现

        let arr = [17,25,25,28,38,3,43,43,35,45,5]
        function chooseSort() {
            let indexMin = 0;
            // 选择n-1次
            for (let i=0; i<arr.length-1; i++) {
                let indexMin = i;
                for (let j=i+1; j<arr.length; j++) {
                    if (arr[j]<arr[indexMin]) {
                        indexMin = j;
                    }
                }
                if (indexMin != i) {
                    let temp = arr[i];
                    arr[i] = arr[indexMin];
                    arr[indexMin] = temp;
                }
            }
            console.log(arr)
        }
        chooseSort()

运行结果:

3.复杂度分析

1. 时间复杂度:找出执行次数最多的语句即可

if (arr[j]<arr[indexMin]) {
      indexMin = j;
}

基于上述每一趟比较的次数,可以得到总的比较次数,就是这个判断语句执行的次数

=> 当i=0时, 需要比较n-1-0次

     当i=1时,需要比较n-1-1次

     ......

     当i=n-3时, 需要比较n-1-(n-3) = 2

     当i=n-2时, 需要比较n-1-(n-2) = 1

     当i=n-1时, 需要比较n-1-(n-1) = 0

=>  (n-1)+(n-2)+(n-3)+...+1+0 = [n(n-1)]/2  = n^2/2 - n/2 + 1/2

=> 去掉系数、低阶和常量  

=> 则时间复杂度为  O(n^2)

2. 空间复杂度: 冒泡排序中并没有用到额外的空间,所以空间复杂度为 O(1)

3. 冒泡排序是不稳定的排序算法:从上述的视频可以看出,数组中有两个43,然而在排完序后,原本前面的43跑到了后面

相关推荐

  1. 排序算法——选择排序

    2023-12-11 07:38:01       60 阅读
  2. 排序算法-选择排序

    2023-12-11 07:38:01       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-11 07:38:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-11 07:38:01       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-11 07:38:01       82 阅读
  4. Python语言-面向对象

    2023-12-11 07:38:01       91 阅读

热门阅读

  1. react表单-受控

    2023-12-11 07:38:01       60 阅读
  2. c++模板学习笔记

    2023-12-11 07:38:01       48 阅读
  3. 跨境电商运营常用的ChatGPT通用提示词模板

    2023-12-11 07:38:01       58 阅读
  4. 基于深度学习的文本分类研究综述

    2023-12-11 07:38:01       54 阅读
  5. 【计算机网络】期末复习第一章

    2023-12-11 07:38:01       62 阅读
  6. uniapp 蓝牙小程序

    2023-12-11 07:38:01       57 阅读
  7. 力扣面试150题 | 买卖股票的最佳时期

    2023-12-11 07:38:01       64 阅读