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

选择排序 Python实现

选择排序是一种简单直观的排序算法,通过重复选择未排序部分的最小元素并放置到已排序部分的末尾。以下是详细的实现和说明:

选择排序步骤

  1. 初始化:将数组分为已排序(左)和未排序(右)两部分。初始时,已排序部分为空。

  2. 查找最小值:遍历未排序部分,找到最小元素的索引。

  3. 交换元素:将最小元素与未排序部分的第一个元素交换,将其纳入已排序部分。

  4. 重复:重复上述步骤,直到所有元素排序完成。

Python 实现

python

复制

下载

'''
选择排序算法
'''
def find_smallest(arr):smallest = arr[0]smallest_index = 0for i in range(1, len(arr)):if arr[i] < smallest:smallest = arr[i]smallest_index = ireturn smallest_indexarr = [5, 3, 6, 2, 10]
# print(find_smallest(arr))def selection_sort(arr):new_arr = []for i in range(len(arr)):smallest = find_smallest(arr)new_arr.append(arr.pop(smallest))return new_arrprint(selection_sort(arr))

示例

输入数组:[64, 25, 12, 22, 11]
排序过程:

  • 第1轮:找到最小值11,交换后 → [11, 25, 12, 22, 64]

  • 第2轮:找到最小值12,交换后 → [11, 12, 25, 22, 64]

  • 第3轮:找到最小值22,交换后 → [11, 12, 22, 25, 64]

  • 第4轮:找到最小值25(已在位),数组不变。

特性

  • 时间复杂度:O(n²)(无论最好/最坏情况)。

  • 空间复杂度:O(1)(原地排序)。

  • 稳定性:不稳定(可能改变相同元素的相对位置)。

适用场景

  • 小规模数据。

  • 对内存使用要求严格。

  • 交换成本较高时(如元素为复杂对象)。

选择排序的核心思想是逐步确定元素的位置,虽然效率不高,但代码简单易懂,适合教学或简单应用场景。

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

相关文章:

  • 深度学习之-目标检测算法汇总(超全面)
  • Java 系统属性深度解析:从 API 校验到实战应用
  • 右键长按超过 200ms, 高亮选中的typora内容, win+a换颜色
  • 文件IO操作、目录操作
  • 软件开发的设计原则
  • 技术篇-2.2.JAVA应用场景及开发工具安装
  • 奥伦德OR-6N137-高速隔离运放光耦,替代6N137,自主晶圆,交期短
  • 什么是特征工程?
  • jmeter登录接口生成一批token并写入csv文件
  • “轩辕杯“云盾砺剑 CTF挑战赛web方向题解
  • 服务器数据恢复—V7000存储上raid5热备盘同步数据失败如何恢复数据?
  • fastadmin添加管理员账号只能查看一个表中指定条件的数据
  • String.join()-高效字符串拼接
  • 在线时间戳(Unix TimeStamp)转换器
  • Linux系统编程-DAY03
  • 新一代网校培训平台的技术演进:从教育源码开发到AI赋能教学转型
  • 【笔试强训day38】
  • 有没有开源的企业网盘,是否适合企业使用?
  • ssrf漏洞学习
  • labview实现登录系统
  • PyTorch中diag_embed和transpose函数使用详解
  • 工商业预付费系统组成架构及系统特点介绍
  • 01-jenkins学习之旅-window-下载-安装-安装后设置向导
  • Spring IoC 和 AOP -- 核心原理与高频面试题解析
  • 设计双向链表--LeetCode
  • MinerU教程第二弹丨MinerU 本地部署保姆级“喂饭”教程
  • BGE-M3 文本情感分类实战:预训练模型微调,导出ONNX并测试
  • OpenCv高阶(十七)——dlib库安装、dlib人脸检测
  • Jeecg漏洞总结及tscan poc分享
  • Mujoco 学习系列(四)官方模型仓库 mujoco_menagerie