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

90.选择排序(理论分析)

一.选择排序


冒泡排序每相邻的俩个元素之间都会比较交换一次,效率比较慢。这对这个问题所改进的算法叫做选择排序。

二.选择排序的实现思路


首先在一组未排序的数据中假定一个最大或者最小元素,一般是第0个元素。然后在从剩余未排序的元素中寻找最大或最小元素的下标,然后将这个数与第n个数交换。如果第n个数是最大的,就不需要交换。

三.举例


假设现在有一组数据:3,9,1,5,2,要求使用选择排序进行从大到小排序。
步骤:
第一轮循环,先假定第0个元素3为最大元素。并记录下标0。然后逐次比较第0个元素和第一个,第二个,第三个,第四个,也就是元素9,1,5,2的大小。很明显第1个元素9是最大的,记录元素9的下标为1。然后交换俩个数的位置,也就是元素3和元素9的位置。
第一轮循环比较完成后:
9,3,1,5,2

第二轮比较,因为第一次排序选择的是将首元素作为最大值,最终经过互换位置,首元素排序完成,第二次排序就不需要排序首元素。
假定第1个元素3为最大元素。并记录下标1,然后逐次和第二个,第三个,第四个,也就是1,5,2的大小。很明显第三个元素5是最大的,记录元素5的下标3,然后交换俩个数的位置,也就是元素3和元素5的位置。
第二轮循环比较完成后:
9,5,1,3,2

第三轮比较,因为第一次和第二次排序已经把第0和第1个元素排序完成。所以第三次不用排序第0和第1个元素。

假定第2个元素1为最大元素。然后逐次比较第三个,第四个也就是3和2的大小,很明显元素3是最大的,记录元素3的下标3,然后交换俩个数的位置,也就是元素1和3的位置。
第三轮循环完成后:
9,5,3,1,2

第四轮比较,因为前三轮比较已经排序好了第0,1,2个元素,所以第四次排序不用排序这几个元素。
假定第3个元素1是最大元素,然后比较第三个和第四个也就是1和2的大小,和明显元素2是最大的,记录元素2的下标4,然后交换俩个数的位置,也就是元素1和2的位置。
第四轮循环完成后:
9,5,3,2,1

四.视频教程

90.选择算法(理论分析)_哔哩哔哩_bilibili

http://www.lryc.cn/news/485098.html

相关文章:

  • GitLab 如何跨版本升级?
  • 【Fermat】费马小定理
  • NVMe(Non-Volatile Memory Express)非易失性存储器访问和传输协议
  • C++初阶——queue
  • 达梦数据库迁移j脚本
  • 【Linux】内核调用栈打印函数dump_stack使用效果
  • Uniapp踩坑input自动获取焦点ref动态获取实例不可用
  • 数据分析-47-时间序列变点检测之离线历史数据的CPD
  • 加入GitHub Spark需要申请
  • 生成式GPT商品推荐:精准满足用户需求
  • async 和 await的使用
  • Spring Cloud Vault快速入门Demo
  • 道陟科技EMB产品开发进展与标准设计的建议|2024电动汽车智能底盘大会
  • GitHub Org
  • unity小:shaderGraph不规则涟漪、波纹效果
  • 【JavaScript】JavaScript开篇基础(6)
  • Spark RDD、DStream、DataFrame、DataSet 在窗口操作上的区别
  • http自动发送请求工具(自动化测试http请求)
  • 网络IP地址会经常换吗?深入解析与实操指南
  • MapLocNet由粗到细的定位网络
  • 【Docker】Mac安装Docker Desktop导致磁盘剩余空间较少问题如何解决?
  • 构建客服知识库:企业效率提升的关键步骤
  • java-Day06 内部类 Lambda表达式 API
  • Springboot配置全局异常通用返回
  • 计算机视觉在自动驾驶汽车中的应用
  • wordpress functions文件的作用及详细说明
  • Cellebrite VS IOS18Rebooting
  • [每日一氵] PySpark 的 log GC 部分是什么意思
  • Transformer中的算子:其中Q,K,V就是算子
  • JWTUtil工具类