当前位置: 首页 > news >正文

排序算法---选择排序

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跑到了后面

http://www.lryc.cn/news/257221.html

相关文章:

  • 物联网IC
  • 2022年第十一届数学建模国际赛小美赛A题翼龙如何飞行解题全过程文档及程序
  • Blender学习--制作带骨骼动画的机器人
  • 单片机学习13——串口通信
  • Unity 实现单例模式
  • 【Android12】Android Framework系列--AMS启动Activity分析
  • Hive的几种排序方式、区别,使用场景
  • 设计模式-外观模式
  • Kubernetes实战(九)-kubeadm安装k8s集群
  • 【HarmonyOS开发】拖拽动画的实现
  • 提高问卷填写率的策略与方法
  • 软件工程考试复习
  • PHP基础 - 类型比较
  • 张正友相机标定法原理与实现
  • 【LeetCode】2723. 两个 Promise 对象相加
  • 设计模式--命令模式的简单例子
  • 排序算法之六:快速排序(非递归)
  • 【概率方法】重要性采样
  • MyBatis 四大核心组件之 StatementHandler 源码解析
  • 用Guava做本地缓存示例
  • Django多对多ManyToManyField字段
  • docker-centos中基于keepalived+niginx模拟主从热备完整过程
  • 软件科技成果鉴定测试需提供哪些材料?
  • 办公word-从不是第一页添加页码
  • Android笔记(十七):PendingIntent简介
  • 为 Compose MultiPlatform 添加 C/C++ 支持(2):在 jvm 平台使用 jni 实现桌面端与 C/C++ 互操作
  • 【PyTorch】卷积神经网络
  • qt可以详细写的项目或技术
  • 操作系统笔记——储存系统、文件系统(王道408)
  • 基于Html+腾讯云播SDK开发的m3u8播放器