选择排序 - python实现详解
选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在没有排序列表中找到最小(大)元素,存放到列表的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序列表的末尾。以此类推,直到所有元素均排序完毕。
选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。
选择排序分析
代码如下:
def select_sort(li: list):n = len(li)for i in range(n - 1): # 外层循环从0开始min = i # 假设第一个元素是最小的for j in range(i + 1, n): # 因为第i个元素已经假设最小的了,所以此处要从i+1开始循环与min进行比较if li[j] < li[min]: # 挨个判断是否比min小min = j # 如果比min小,则让min指向更小的元素的索引if min != i:# 一轮循环过后如果min指向的还是最初假设的i,则表示i本来就是list中最小的元素,就不用进行交换了,# 如果min不等于i,则表示min指向了list中更小也是最小的元素,此时让min指向的元素和i处的元素互换位置li[i], li[min] = li[min], li[i]
时间复杂度
- 最优时间复杂度:O(n2)
- 最坏时间复杂度:O(n2)
- 稳定性:不稳定(考虑升序每次选择最大的情况)
选择排序 - python实现详解相关推荐
- 07 Python数据类型详解
文章目录 一.整数类型(int)详解 1.1 整数的不同进制 1) 十进制形式 2) 二进制形式 3) 八进制形式 4) 十六进制形式 1.2 数字分隔符 1.3 相关方法 二.字符串类型(strin ...
- Python数据分析详解
Python数据分析详解 数据分析概述 python在数据分析方面有哪些优势 Python不受数据规模的约束,能够处理大规模数据. Python的sklearn库提供了丰富的数据挖掘和人工智能方法,为 ...
- 【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一
相关链接 [2023年第十一届泰迪杯数据挖掘挑战赛]C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一 [2023年第十一届泰迪杯数据挖掘挑战赛]C题泰迪内推平台招聘与求职 ...
- 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题二
相关链接 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 ...
- Python|SQL详解之DDL|DML|DQL|DCL|索引|视图、函数和过程|JSON类型|窗口函数|接入MySQL|清屏|正则表达式|executemany|语言基础50课:学习(14)
文章目录 系列目录 原项目地址 第41课:SQL详解之DDL 建库建表 删除表和修改表 第42课:SQL详解之DML insert操作 delete 操作 update 操作 完整的数据 第43课:S ...
- python 最小二乘法_最小二乘法及其python实现详解
最小二乘法Least Square Method,做为分类回归算法的基础,有着悠久的历史(由马里·勒让德于1806年提出).它通过最小化误差的平方和寻找数据的最佳函数匹配.利用最小二乘法可以简便地求得 ...
- 【python】什么是序列,Python序列详解
什么是序列,Python序列详解 概述 序列索引 序列切片 序列相加 序列相乘 检查元素是否包含在序列中 序列相关的内置函数 range 快速初始化数字列表 概述 所谓序列,指的是一块可存放多个值的连 ...
- Python数据类型详解03
原文博客地址: Python数据类型详解03 第一篇Python数据类型详解01中主要介绍了Python中的一些常用的数据类型的基础知识 第二篇Python数据类型详解02文章中, 详细介绍了数字(N ...
- 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一
相关链接 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 ...
最新文章
- WFA 认证 启动 sigma_dut方法
- arm linux移植jvm,JVM的ARM移植.PDF
- [Golang]一道考察defer与命名返回值的题目
- 9.22 keep studying
- 波形分析--串口数据
- android动画水波纹外扩,Android实现水波纹扩散效果
- 老骥伏羲,某讯遗产K3路由器2021年刷机指南。
- 模拟退火算法(Python)
- 2022年上半年软件设计师常考概念
- Android wpa_supplicant源码分析–扫描scan过程
- 国内常见的日内CTA策略介绍以及实现
- 移动端adaptive设置
- rasterization(栅格化)
- BuildPack:无需编写 Dockerfile,新一代的企业镜像打包工具
- STM8/STM32 SPI模式的MAX7456代码
- 艾克姆 蓝牙nRF52832上册-学习笔记
- 适合小程序定制的企业有哪些?
- 标称型和数值型(连续型)的区别
- 小学教师计算机课评课,信息技术优质课听课反思
- python相关pyc文件的编译、运行和反编译