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

选择排序 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.xdnf.cn/news/8303.html

相关文章:

  • 鸿蒙 Initiated Worker with invalid NODE_OPTIONS env variable
  • python 实现 web 请求与相应
  • 重拾童年,用 CodeBuddy 做自己的快乐创作者
  • AI练习:长投影
  • JWT了解
  • 谷歌 AI Ultra:开启人工智能新时代
  • 我的爬虫夜未眠:一场与IP限流的攻防战
  • [安装并使用Milvus_CLI]
  • Accelerate 2025北亚巡展正式启航!AI智御全球·引领安全新时代
  • Dynadot专业版邮箱工具指南(四):设置Catch-all邮箱/泛邮箱
  • 进阶知识:用例依赖装饰器的实现方法的 代码细节问题解析
  • HarmonyOS:帧率和丢帧分析实践
  • Linux Docker安装【再探完美版教程】
  • Pyhton | SARIMA模型预测
  • 《STL--string的使用及其底层实现》
  • html+css+js趣味小游戏~猜数字游戏(附源码)
  • Redisson读写锁和分布式锁的项目实践
  • 新疆工程系列建筑专业职称评审条件
  • 【面板数据】各市PM2.5数据集(2000-2024年)
  • 浙江大学python程序设计(陈春晖、翁恺、季江民)习题答案-第九章
  • 支持PAM特权账号管理和人脸识别,JumpServer开源堡垒机v4.10 LTS版本发布
  • Day124 | 灵神 | 二叉树 | 二叉树最小深度
  • Pyinstaller对动态导入模块的详细描述
  • 在WSL2中运行nvidia-smi时出现命令未找到的问题
  • python线性回归
  • 地下水监测的施工与安装
  • 考研数一公式笔记
  • 【笔试强训day38】
  • Go语言之Map 的基本操作-《Go语言实战指南》
  • Windows逆向工程提升之FOA RVA VA OEP IMAGE BASE