js的算法-选择排序(简单选择排序)
选择排序
每一趟(如第i趟)在后面n-i+1(i=1,2,……n-1)个待排序元素中选取关键字最小的元素,作为有序子序列的第i 个元素,直到第i个元素,直到第n-1趟做完,待排序元素只剩下1个,就不用再选了。
快速选择排序
基本思想:假设排序表为L【1……n】,第i 趟排序即从L【i……n】中选择关键字最小的元素与L(i)交换,每一趟排序可以确定一个元素的最终位置,这样经过n-1趟排序就可使得整个排序表有序。
演示





代码展示
let ary = [3, 8, 1, 9, 4, 5, 6, 2, 7];
/*** 插入排序* @param {*} arr*/
function singleChoose(arr) {for (let i = 0; i <= arr.length - 2; i++) {//外层循环 从第一个元素到倒数第二个元素let min = arr[i];let k = i; //标记最小的元素所在的下标for (let j = i + 1; j <= arr.length - 1; j++) {// 内层循环就是一个找最小值的过程if (arr[j] < min) {min = arr[j];k = j; //同时要更新最小值所在的下表}}arr[k] = arr[i]; //让i下标的元素放到最小值所在的下标处arr[i] = min; // 在i下标处放置最小元素console.log(arr + "\n");}
}singleChoose(ary);
console.log(ary);
运行结果:
1,8,3,9,4,5,6,2,71,2,3,9,4,5,6,8,71,2,3,9,4,5,6,8,71,2,3,4,9,5,6,8,71,2,3,4,5,9,6,8,71,2,3,4,5,6,9,8,71,2,3,4,5,6,7,8,91,2,3,4,5,6,7,8,9[1, 2, 3, 4, 5,6, 7, 8, 9
]
性能分析
| 时间复杂度 | 空间复杂度 |
|---|---|
| 最好情况下:O(n^ 2);最坏情况下:O(n^2); | |
| 平均时间复杂度:O(n^2); | 仅使用了常数个辅助单元,所以空间复杂度为O(1) |
总结
- 稳定性: 不稳定
相关文章:
js的算法-选择排序(简单选择排序)
选择排序 每一趟(如第i趟)在后面n-i1(i1,2,……n-1)个待排序元素中选取关键字最小的元素,作为有序子序列的第i 个元素,直到第i个元素,直到第n-1趟做完,待排序元素只剩下1个,就不用再选了。 快…...
Mac虚拟机工具 CrossOver 24.0.0 Beta3 Mac中文版
CrossOver是一款在Mac上运行Windows应用程序的软件,无需安装虚拟机或重启计算机,简化了操作过程,提高了工作效率,为用户带来便捷体验。前往Mac青桔下载,享受前所未有的便利和高效。摘要由作者通过智能技术生成 CrossOv…...
路由聚合和VRRP技术
实验拓扑图: 实验需求 1、内网IP地址使用172.16.0.0/16 2、SW1和SW2之间互为备份; 3、VRRP/stp/vlan/eth-trunk均使用; 4、所有pc均通过DHCP获取IP地址; 5、ISP只配置IP地址; 6、所有电脑可以正常访问ISP路由器环…...
【原创教程】三菱FX3U系列培训专题课教案
位置控制三要素 定位控制指令必须要有以下三个条件 1、位置移动速度(电机转速) 2、位置移动距离(电机的旋转圈数) 3、位置移动方向(电机的旋转方向) FX3U_PLC的高速脉冲输出端口 普通输出端口受程序控制,什么时间通,什么时间断,没有固定的通断周期 高速脉冲输出端口…...
清空了电脑回收站,之前的文件还能否恢复?
电脑已成为我们日常生活中不可或缺的一部分。我们在电脑上处理文档、保存图片、下载视频等,而电脑中的回收站则成为我们处理不再需要文件的一个便捷工具,当我们想要删除某些文档的话,它并不是立即从硬盘上消失,而是被系统移动到了…...
设计模式——职责链(责任链)模式
目录 职责链模式 小俱求实习 结构图 实例 职责链模式优点 职责链模式缺点 使用场景 1.springmvc流程 2.mybatis的执行流程 3.spring的过滤器和拦截器 职责链模式 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成…...
功耗相关总结
文章目录 功耗相关的使用场景MCU中低功耗的应用RTOS中低功耗应用 功耗相关的使用场景 目前越来越多的嵌入式设备采用电池进行供电,而不是跟台式电脑一样,可以一直连接着电源。在电池供电的场景下,对功耗的要求很高,工程师们尽量希…...
17款奔驰GLS450升级头等舱行政独立四座马鞍是什么样体验
五座版本:迈巴赫GLS480的五座版本通常指的是具有五个座位的配置,包括两个前排座椅和三个后排座椅。这种配置适合搭载更多乘客,后排座椅通常为三人座设计,乘坐人数较多。 四座版本:迈巴赫GLS480的四座版本通常指的是具…...
浏览器的下载行为基本原理
浏览器解析 在使用浏览器访问某些资源时,有些资源是直接下载有些资源是直接打开。例如前端的html,xml,css,图片等资源都是直接打开,而txt,excel等文件是直接下载。那么如何控制访问一个资源时是下载文件还…...
浅谈微服务的自动化部署
一、常用部署工具 jenkins,docker生态是比较常用的工具,本文也主要是聊这几个。其他如Kubernetes (K8s),Ansible,GitLab CI/CD等工具本文只是暂时提一下,不展开讨论。 二、比较jenkins和docker生态 1、jenkins 优点 jenkins功…...
【C语言】8.C语言操作符详解(1)
文章目录 1.操作符的分类2.⼆进制和进制转换3.原码、反码、补码4.移位操作符4.1 左移操作符4.2 右移操作符 5.位操作符:&、|、^、~5.1 &:按位与5.2 |:按位或5.3 ^:按位异或5.4 ~:按位取反5.5 例题例题1例题2例…...
Buzz库网络爬虫实例:快速爬取百度搜索实时热点
前言 随着互联网的发展,信息获取已经成为了人们日常生活和工作中的重要一环。而在信息获取的过程中,网络爬虫作为一种自动化的数据采集工具,为我们提供了极大的便利。本文将介绍如何利用PHP编写一个简单而高效的网络爬虫,实现快速…...
SQL注入:pikachu靶场中的SQL注入通关
目录 1、数字型注入(post) 2、字符型注入(get) 3、搜索型注入 4、XX型注入 5、"insert/update"注入 Insert: update: 6、"delete"注入 7、"http header"注入 8、盲…...
springsecurity入门登录授权
①我们需要自定义登陆接口,也就是在controller目录新建LoginController类,在controller方法里面去调用service接口,在service接口实现AuthenticationManager去进行用户的认证,注意,我们定义的controller方法要让Spring…...
医学科技查新中对查新点的撰写方法!附案例讲解!
我国的科技查新工作最早是从医学领域开始的,始于1985年中国科学院医学情报所,后来逐步发展到工、农等其 他各个领域。医学科技查新包括立项查新和成果查新两个部分,其中医学立项查新,它是指在医学科研项目申报开题之前,…...
2024最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版
2024最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版 https://download.csdn.net/download/huayula/89347742...
回溯算法05(leetcode491/46/47)
参考资料: https://programmercarl.com/0491.%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.html 491. 非递减子序列 题目描述: 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素…...
Transformer,革命性的深度学习架构
Transformer 是一种革命性的深度学习架构,专门设计用于处理序列数据,特别是在自然语言处理(NLP)任务中表现卓越。它由 Vaswani 等人在 2017 年发表的论文《Attention is All You Need》中首次提出,打破了当时基于循环神经网络(RNN)和卷积神经网络(CNN)的序列建模常规,…...
实验五:实现循环双链表各种基本运算的算法
实验五:实现循环双链表各种基本运算的算法 一、实验目的与要求 目的:领会循环双链表存储结构和掌握循环双链表中各种基本运算算法设计。 内容:编写一个程序cdinklist.cpp,实现循环双链表的各种基本运算和整体建表算法(假设循环双链表的元素类型ElemType为char),并…...
ElasticSearch IK分词器的安装、词典扩展与停用
🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:云原生与服务部署-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 目录 编辑 1. 前言 2. IK分词器安装 3. IK分词器词典扩展与停用 4. 总…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
第2课 SiC MOSFET与 Si IGBT 静态特性对比
2.1 输出特性对比 2.2 转移特性对比 2.1 输出特性对比 器件的输出特性描述了当温度和栅源电压(栅射电压)为某一具体数值时,漏极电流(集电极电流...
Linux 中替换文件中的某个字符串
如果你想在 Linux 中替换文件中的某个字符串,可以使用以下命令: 1. 基本替换(sed 命令) sed -i s/原字符串/新字符串/g 文件名示例:将 file.txt 中所有的 old_text 替换成 new_text sed -i s/old_text/new_text/g fi…...
自动化立体仓库堆垛机控制系统STEP7 OB1功能块
1、堆垛机控制系统STEP7硬件组态如下图 CPU CPU 314C-2 PN/DP 6ES7 314-6EH04-0AB0 SM 338 POS-INPUT AO2x12Bit 6ES7 332-5HB01-0AB0 2、堆垛机控制系统STEP7内部变量 前进HMI M 0.0 BOOL 后退HMI M 0.1 BOOL 上升HMI M 0.2 B…...
DiMTAIC 2024 数字医学技术及应用创新大赛-甲状腺B超静态及动态影像算法赛-参赛项目
参赛成绩 项目介绍 去年参加完这个比赛之后,整理了项目文件和代码,虽然比赛没有获奖,但是参赛过程中自己也很有收获,自己一个人搭建了完整的pipeline并基于此提交了多次提高成绩,现在把这个项目梳理成博客,…...
