当前位置: 首页 > 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跑到了后面

相关文章:

  • 基于ssm高校实验室管理系统的设计与实现论文
  • uniapp移动端悬浮按钮(吸附边缘)
  • 【rabbitMQ】模拟work queue,实现单个队列绑定多个消费者
  • gittee使用教学
  • 基于Solr的全文检索系统的实现与应用
  • 华为OD机试 - 部门人力分配(Java JS Python C)
  • FFmpeg抽取视频h264数据重定向
  • JAVA网络编程——BIO、NIO、AIO深度解析
  • Go Fyne 入门
  • docker-compose安装教程
  • 51单片机LED与无源蜂鸣器模块
  • Python高级算法——动态规划
  • 【期末计算机组成原理速成】第三章:存储器
  • 【MYSQL】单表查询
  • 《算法与数据结构》答疑
  • JavaScript-如何实现克隆(clone)函数
  • idea + plantuml 画流程图
  • Java多线程(4):使用线程池执行定时任务
  • leetcode-27. Remove Element
  • LintCode 31. partitionArray 数组划分
  • magento 货币换算
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • web标准化(下)
  • windows下使用nginx调试简介
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 搞机器学习要哪些技能
  • 构造函数(constructor)与原型链(prototype)关系
  • 检测对象或数组
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 阿里云服务器如何修改远程端口?
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 积累各种好的链接
  • ​2020 年大前端技术趋势解读
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #LLM入门|Prompt#3.3_存储_Memory
  • #vue3 实现前端下载excel文件模板功能
  • (12)Linux 常见的三种进程状态
  • (12)目标检测_SSD基于pytorch搭建代码
  • (2)nginx 安装、启停
  • (4.10~4.16)
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (五)c52学习之旅-静态数码管
  • (转)四层和七层负载均衡的区别
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .describe() python_Python-Win32com-Excel
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .Net Core 微服务之Consul(三)-KV存储分布式锁