排序算法---选择排序

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.hqwc.cn/news/263299.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

laravel的ORM 对象关系映射

Laravel 中的 ORM&#xff08;Eloquent ORM&#xff09;是 Laravel 框架内置的一种对象关系映射系统&#xff0c;用于在 PHP 应用中与数据库进行交互。Eloquent 提供了一种优雅而直观的语法&#xff0c;使得开发者可以使用面向对象的方式进行数据库查询和操作。 定义模型&…

C++笔记之C语言中的换行符和转义符

C笔记之C语言中的换行符和转义符 文章目录 C笔记之C语言中的换行符和转义符 在C语言中&#xff0c;换行符和转义符用于在字符串和字符常量中表示特殊字符。下面是关于换行符和转义符的解释&#xff1a; 换行符&#xff08;Newline character&#xff09;&#xff1a; 在C语言中…

【漏洞复现】华脉智联指挥调度平台/script_edit/fileread.php文件读取漏洞

Nx01 产品简介 深圳市华脉智联科技有限公司&#xff0c;融合通信系统将公网集群系统、专网宽带集群系统、不同制式、不同频段的短波/超短波对讲、模拟/数字集群系统、办公电话系统、广播系统、集群单兵视频、视频监控系统、视频会议系统等融为一体&#xff0c;集成了专业的有线…

MySQL系列(二)——日志篇

MySQL日志 主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中&#xff0c;比较重要的还要属二进制日志binlog&#xff08;归档日志&#xff09;和事务日志redo log&#xff08;重做日志&#xff09;和undo log&#xff08;回滚日志&#xff09;。 今…

【小沐学Python】Python实现语音识别(SpeechRecognition)

文章目录 1、简介2、安装和测试2.1 安装python2.2 安装SpeechRecognition2.3 安装pyaudio2.4 安装pocketsphinx&#xff08;offline&#xff09;2.5 安装Vosk &#xff08;offline&#xff09;2.6 安装Whisper&#xff08;offline&#xff09; 3 测试3.1 命令3.2 fastapi3.3 go…

1834_emacs_ivy以及counsel的常用功能

Grey 全部学习汇总&#xff1a; GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used. emacs ivy以及counsel的常用功能 主要功能 ivy主要是实现一些emacs的minibuffer的操作增强功能的。如果不进行类似的增强扩展&#xff0c;在进行这方面相…

关于加密解密,加签验签那些事

面对MD5、SHA、DES、AES、RSA等等这些名词你是否有很多问号&#xff1f;这些名词都是什么&#xff1f;还有什么公钥加密、私钥解密、私钥加签、公钥验签。这些都什么鬼&#xff1f;或许在你日常工作没有听说过这些名词&#xff0c;但是一旦你要设计一个对外访问的接口&#xff…

MySQL进阶学习--day02

存储引擎介绍 1. InnoDB1.1 介绍1.2 特点1.3 文件1.4 逻辑存储结构 2. MyISAM2.1 介绍2.2 特点2.3 文件 3. Memory3.1 介绍3.2 特点3.3 文件 4. 区别及特点5. 存储引擎选择6. InnoDB引擎与MyISAM引擎的区别 ? 上篇文章我们介绍了什么是存储引擎&#xff0c;以及如何在建表时如…

欧拉回路欧拉路【详解】

1.引入 2.概念 3.解决方法 4.例题 5.回顾 1.引入 经典的七桥问题 哥尼斯堡是位于普累格河上的一座城市&#xff0c;它包含两个岛屿及连接它们的七座桥&#xff0c;如下图所示。 可否走过这样的七座桥&#xff0c;而且每桥只走过一次&#xff1f; 你怎样证明&#xff1f;…

2023-12-05 Qt学习总结8

点击 <C 语言编程核心突破> 快速C语言入门 Qt学习总结 前言二十三 QSqlDatabase数据库二十四 cmake工程管理文件总结 前言 要解决问题: 学习qt最核心知识, 多一个都不学. 二十三 QSqlDatabase数据库 QSqlDatabase 是 Qt 框架中关于数据库的统一封装&#xff0c;它支持…

Kubernetes(K8s 1.27.x) 快速上手+实践,无废话纯享版(视频笔记)

视频源&#xff1a;1.03-k8s是什么&#xff1f;_哔哩哔哩_bilibili 1 基础知识 1.1 K8s 有用么&#xff1f; K8s有没有用 K8s要不要学&#xff1f; 参考资料: https://www.infoq.com/articles/devops-and-cloud-trends-2022/?itm_sourcearticles_about_InfoQ-trends-report…

PyQt下使用OpenCV实现人脸检测与识别

背景&#xff1a; 一 数字图像处理与识别警务应用模型 基于前期所学知识&#xff0c;与公安实践相结合&#xff0c;综合设计数字图像处理与识别警务应用模型,从下列4个研究课题中选择2个进行实验实现&#xff1a;图像增强与复原、人脸检测与识别、虹膜内外圆检测与分割、车牌…