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

数据结构与算法之排序: 选择排序 (Javascript版)

排序

  • 排序:把某个乱序的数组变成升序或降序的数组 (这里用数组来做举例)

选择排序

  • 该排序属于 贪心 策略
  • 关注的是局部,是一种苟且的东西

算法实现

// 随机数组,选择排序
Array.prototype.selectionSort = function() {let len = this.length;for(let i=0; i<len-1; ++i) {let minIndex = i; // 注意这里更新for(let j=i;j<len;++j) {if(this[j] < this[minIndex]) {minIndex = j; // 循环更新最小值}}// 最小值与内层循环开始位置进行交换, 通过if做一下优化if(i !== minIndex) {[this[i], this[minIndex]] = [this[minIndex], this[i]]; // ES6 交换}}
}let arr = [5,4,3,2,1]
arr.selectionSort()
console.log(arr); // [1, 2, 3, 4, 5]
  • 性能不好,比较简单,贪心
  • 找到数组中最小值,选中它并将其放置于第一位(第一轮)
  • 接着找到第二小的值,选中它并将其放置在第二位(第二轮)
  • 以此类推,执行n-1轮
  • 注意,每一轮比较完毕,前面的都是有序的,可以跳过,不再比较
  • 时间复杂度
    • O(n^2)
http://www.lryc.cn/news/208988.html

相关文章:

  • 【前端】NodeJS核心知识点整理
  • 计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】
  • day06-Flex布局
  • 架构整洁之道摘录
  • 流程引擎-自定义函数的应用
  • ChatGLM系列二:ChatGLM2的介绍及代码实践
  • JDBC对数据库进行操作
  • unity 使用Image的RectTransform来进行判断是否点击到
  • 【C++】类与对象 第一篇(class,this)
  • 嵌入式软件工程师面试题——2025校招专题(四)
  • actual combat 21——华为云从零开始项目部署(附nginx转发域名方式)
  • @CallSuper注解方法学习
  • 03_Flutter自定义下拉菜单
  • 如何查看多开的逍遥模拟器的adb连接端口号
  • 2023年中国道路扫雪车分类、市场规模及发展前景分析[图]
  • 【机器学习】迁移学习(Transfer)详解!
  • 软件测试面试题
  • 分治算法解决归并排序问题
  • Spring Security漏洞防护—HttpFirewall和 HTTPS
  • Makefile泛谈
  • Python的快捷键
  • css为盒子设置滚动条隐藏滚动条
  • 音视频开发常见问题(四):视频花屏和绿屏
  • 设计模式—创建型模式之单例模式
  • 7.现代卷积神经网络
  • 配置Super-VLAN下的DHCP服务器示例
  • 【开源】基于SpringBoot的城市桥梁道路管理系统的设计和实现
  • 关于根据动态数量的对象的某属性的数组数量呈乘机式增长的数据处理
  • 数据分析和互联网医院小程序:提高医疗决策的准确性和效率
  • asp.net学生考试报名管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio