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

26考研——排序_选择排序_选择排序的基本思想 简单选择排序(8)

408答疑


文章目录

  • 四、选择排序
    • 选择排序的基本思想
    • 简单选择排序
      • 定义
      • 算法思想
      • 性能分析
        • 空间效率
        • 时间效率
        • 稳定性
      • 适用性
  • 九、参考资料
    • 鲍鱼科技课件
    • 26王道考研书


四、选择排序

选择排序的基本思想

  • 每一趟(如第 i i i 趟)在剩下 n − i + 1 n-i+1 ni+1 i = 1 , 2 , … , n − 1 i=1, 2, \ldots, n-1 i=1,2,,n1)个待排序元素中选取关键字最小的元素,作为有序子序列的第 i i i 个元素,直到第 n − 1 n-1 n1 趟做完,待排序元素只剩下 1 个,就不用再选。选择排序中的堆排序是历年统考考查的重点。

简单选择排序

定义

选择排序是一种简单直观的排序算法。顾名思义,每次通过选择剩下元素的极值(最大值或最小值),往已排序好的序列之后存放,通过选择元素而达到的排序。

算法思想

  • 假设排序表为 L [ 1.. n ] L[1..n] L[1..n],第 i i i 趟排序即从 L [ i . . n ] L[i..n] L[i..n] 中选择关键字最小的元素与 L ( i ) L(i) L(i) 交换。
  • 每一趟排序可以确定一个元素的最终位置,这样经过 n − 1 n-1 n1 趟排序就可使整个排序表有序。

在这里插入图片描述

性能分析

空间效率
  • 空间效率为 O ( 1 ) O(1) O(1),仅使用常数个辅助单元。
时间效率
  • 元素移动的操作次数很少,不会超过 3 ( n − 1 ) 3(n-1) 3(n1) 次,最好的情况是移动 0 次,此时对应的表已经有序。
  • 元素间比较的次数与序列的初始状态无关,始终是 n ( n − 1 ) / 2 n(n-1)/2 n(n1)/2 次,因此时间复杂度始终是 O ( n 2 ) O(n^2) O(n2)
稳定性
  • 简单选择排序是一种不稳定的排序算法。
  • 在第 i i i 趟找到最小元素后,和第 i i i 个元素交换,可能会导致第 i i i 个元素与含有相同关键字的元素的相对位置发生改变。
  • 例如,表 L = { 2 1 , 2 2 , 1 } L = \{2_1, 2_2, 1\} L={21,22,1},经过一趟排序后 L = { 1 , 2 2 , 2 1 } L = \{1, 2_2, 2_1\} L={1,22,21},最终排序序列也是 L = { 1 , 2 2 , 2 1 } L = \{1, 2_2, 2_1\} L={1,22,21},显然, 2 1 2_1 21 2 2 2_2 22 的相对次序已发生变化。

适用性

  • 简单选择排序适用于顺序存储和链式存储的线性表,以及关键字较少的情况。

九、参考资料

鲍鱼科技课件

b站免费王道课后题讲解:
在这里插入图片描述

网课全程班:
在这里插入图片描述

26王道考研书

http://www.dtcms.com/a/98375.html

相关文章:

  • 每天一篇目标检测文献(六)——Part One
  • 小林coding-12道Spring面试题
  • 自然语言处理(17:(第五章2.)梯度消失和LSTM(详细拆解))
  • WebSocket通信的握手阶段
  • 基于 WebAssembly 的 Game of Life 交互实现
  • ArrayList和LinkedList比较
  • 使用 Python 进行链上数据监控:让区块链数据触手可及
  • 深入解析音频:格式、同步及封装容器
  • SQL Server:sys.dm_hadr_physical_seeding_stats
  • 2023第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组(真题题解)(C++/Java题解)
  • [项目]基于FreeRTOS的STM32四轴飞行器: 十六.激光测距定高功能
  • 【Web前端】解锁JavaScript中Web存储API的秘密
  • LoRA 模型微调框架核心原理及实现步骤
  • 第7期:生成式AI伦理边界——当技术撞上道德与法律的防火墙
  • GHCTF-web-wp
  • AI人工智能-Jupyter NotbookPycharm:Py开发
  • 电池的知识
  • MySQL 语句
  • 洛谷题单1-P5708 【深基2.习2】三角形面积-python-流程图重构
  • 【数据结构与算法】Java描述:第六节:排序算法(直接插入排序,希尔排序)
  • 3.29-4nmon
  • Python包管理完全指南:pip常用命令与最佳实践
  • Java项目实现幂等性方案总结
  • CSS3学习教程,从入门到精通, CSS3 盒子模型的详细语法知识点及案例代码(23)
  • Spring AI MCP 架构详解
  • [笔记.AI]向量化
  • Linux系统修改网卡名为eth0、eth1
  • 【CSS】相对位置小练习
  • SQL Server 备份相关信息查看
  • http与tcp的关系