选择排序

选择排序(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实现详解相关推荐

  1. 07 Python数据类型详解

    文章目录 一.整数类型(int)详解 1.1 整数的不同进制 1) 十进制形式 2) 二进制形式 3) 八进制形式 4) 十六进制形式 1.2 数字分隔符 1.3 相关方法 二.字符串类型(strin ...

  2. Python数据分析详解

    Python数据分析详解 数据分析概述 python在数据分析方面有哪些优势 Python不受数据规模的约束,能够处理大规模数据. Python的sklearn库提供了丰富的数据挖掘和人工智能方法,为 ...

  3. 【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一

    相关链接 [2023年第十一届泰迪杯数据挖掘挑战赛]C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一 [2023年第十一届泰迪杯数据挖掘挑战赛]C题泰迪内推平台招聘与求职 ...

  4. 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题二

    相关链接 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 ...

  5. Python|SQL详解之DDL|DML|DQL|DCL|索引|视图、函数和过程|JSON类型|窗口函数|接入MySQL|清屏|正则表达式|executemany|语言基础50课:学习(14)

    文章目录 系列目录 原项目地址 第41课:SQL详解之DDL 建库建表 删除表和修改表 第42课:SQL详解之DML insert操作 delete 操作 update 操作 完整的数据 第43课:S ...

  6. python 最小二乘法_最小二乘法及其python实现详解

    最小二乘法Least Square Method,做为分类回归算法的基础,有着悠久的历史(由马里·勒让德于1806年提出).它通过最小化误差的平方和寻找数据的最佳函数匹配.利用最小二乘法可以简便地求得 ...

  7. 【python】什么是序列,Python序列详解

    什么是序列,Python序列详解 概述 序列索引 序列切片 序列相加 序列相乘 检查元素是否包含在序列中 序列相关的内置函数 range 快速初始化数字列表 概述 所谓序列,指的是一块可存放多个值的连 ...

  8. Python数据类型详解03

    原文博客地址: Python数据类型详解03 第一篇Python数据类型详解01中主要介绍了Python中的一些常用的数据类型的基础知识 第二篇Python数据类型详解02文章中, 详细介绍了数字(N ...

  9. 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一

    相关链接 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 ...

最新文章

  1. WFA 认证 启动 sigma_dut方法
  2. arm linux移植jvm,JVM的ARM移植.PDF
  3. [Golang]一道考察defer与命名返回值的题目
  4. 9.22 keep studying
  5. 波形分析--串口数据
  6. android动画水波纹外扩,Android实现水波纹扩散效果
  7. 老骥伏羲,某讯遗产K3路由器2021年刷机指南。
  8. 模拟退火算法(Python)
  9. 2022年上半年软件设计师常考概念
  10. Android wpa_supplicant源码分析–扫描scan过程
  11. 国内常见的日内CTA策略介绍以及实现
  12. 移动端adaptive设置
  13. rasterization(栅格化)
  14. BuildPack:无需编写 Dockerfile,新一代的企业镜像打包工具
  15. STM8/STM32 SPI模式的MAX7456代码
  16. 艾克姆 蓝牙nRF52832上册-学习笔记
  17. 适合小程序定制的企业有哪些?
  18. 标称型和数值型(连续型)的区别
  19. 小学教师计算机课评课,信息技术优质课听课反思
  20. python相关pyc文件的编译、运行和反编译

热门文章

  1. three.js之正投影摄像机与透视投影摄像机的区别
  2. 悉尼一船只引擎爆炸男子被迫跳水:严重烧伤被送医
  3. Centos7用yum安装完mysql后没有mysqld的问题(mysql中三个包都装过了)
  4. Mono for Android—初体验之“电话拨号器”
  5. 卸载Oracle数据库(有图有真相)
  6. Java Web编程技术
  7. Android Service LifeCycle
  8. CIO常犯的五个错误
  9. SAP Basis Consultant Job Role
  10. 给 npm script 传递参数和添加注释