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

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)

总结

  1. 稳定性: 不稳定
http://www.lryc.cn/news/351240.html

相关文章:

  • Mac虚拟机工具 CrossOver 24.0.0 Beta3 Mac中文版
  • 路由聚合和VRRP技术
  • 【原创教程】三菱FX3U系列培训专题课教案
  • 清空了电脑回收站,之前的文件还能否恢复?
  • 设计模式——职责链(责任链)模式
  • 功耗相关总结
  • 17款奔驰GLS450升级头等舱行政独立四座马鞍是什么样体验
  • 浏览器的下载行为基本原理
  • 浅谈微服务的自动化部署
  • 【C语言】8.C语言操作符详解(1)
  • Buzz库网络爬虫实例:快速爬取百度搜索实时热点
  • SQL注入:pikachu靶场中的SQL注入通关
  • springsecurity入门登录授权
  • 医学科技查新中对查新点的撰写方法!附案例讲解!
  • 2024最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版
  • 回溯算法05(leetcode491/46/47)
  • Transformer,革命性的深度学习架构
  • 实验五:实现循环双链表各种基本运算的算法
  • ElasticSearch IK分词器的安装、词典扩展与停用
  • 代码随想录训练营总结
  • 深度学习-转置卷积
  • Unity性能优化工具介绍
  • Math之向上向下取整
  • MPP架构
  • These relative modules were not found:* ../../../constant in
  • 2024最新彩虹聚合DNS管理系统源码v1.3 全开源
  • 在Go语言中如何实现变参函数和函数选项模式
  • Spring Boot中的 6 种API请求参数读取方式
  • Linux基础命令[27]-gpasswd
  • 机会约束转化为确定性约束-- 样本均值法