python 数据结构与算法 (13)

选择排序 (Selection sort) 是? 种简单直观的排序算法. 它的? 作原理如 下.? 先在未排序序列中找到最?(?)元素, 存放到排序序列的起始位 置, 然后, 再从剩余未排序元素中继续寻找最?(?)元素, 然后放到已排 序序列的末尾. 以此类推, 直到所有元素均排序完毕.

选择排序的主要优点与数据移动有关. 如果某个元素位于正确的最终位置 上, 则它不会被移动. 选择排序每次交换? 对元素, 它们当中? 少有? 个将 被移到其最终位置上, 因此对 n 个元素的表进? 排序总共进?? 多 n-1 次交 换. 在所有的完全依靠交换去移动元素的排序? 法中, 选择排序属于? 常好 的? 种.

选择排序分析

排序过程:

defselection_sort(alist):n=len(alist)# 需要进? n-1 次选择操作 for i in range(n-1): # 记录最? 位置 min_index = i # 从 i+1 位置到末尾选择出最? 数据 for j in range(i+1, n): if alist[j] < alist[min_index]: min_index = j # 如果选择出的数据不在正确位置, 进? 交换 if min_index != i: alist[i], alist[min_index] = alist[min_index], al ist[i]

alist=[54,226,93,17,77,31,44,55,20]

selection_sort(alist)print(alist)

时间复杂度

最优时间复杂度: O(n ) 最坏时间复杂度: O(n ) 稳定性: 不稳定(考虑升序每次选择最? 的情况)

选择排序演示

插? 排序

插? 排序 (英语: Insertion Sort) 是? 种简单直观的排序算法. 它的? 作原 理是通过构建有序序列, 对于未排序数据, 在已排序序列中从后向前扫描, 找到相应位置并插?. 插? 排序在实现上, 在从后向前扫描过程中, 需要反 复把已排序元素逐步向后挪位, 为最新元素提供插? 空间.

插? 排序分析

definsert_sort(alist):# 从第? 个位置, 即下标为 1 的元素开始向前插? for i in range(1, len(alist)): # 从第 i 个元素开始向前? 较, 如果? 于前? 个元素, 交换位置 for j in range(i, 0, -1): if alist[j] < alist[j-1]:

alist[j],alist[j-1]=alist[j-1],alist[j]

alist=[54,26,93,17,77,31,44,55,20]insert_sort(alist)print(alist)

时间复杂度

最优时间复杂度: O(n) (升序排列, 序列已经处于升序状态) 最坏时间复杂度: O(n ) 稳定性: 稳定

插? 排序演示

python 数据结构与算法(13)

来源: http://www.bubuko.com/infodetail-2866005.html

python数据结构与算法13_python 数据结构与算法 (13)相关推荐

  1. python调包侠_拒绝调包侠,不需要高级算法和数据结构技巧

    大多数工科学生或者刚刚入门近年来比较火的"人工智能"相关算法的同学,在选择语言的时候,都会选择MATLAB. Python .R等等这些高级语言,对自己所学的算法进行实现和调试.这 ...

  2. python数据结构推荐书-「算法与数据结构」从入门到进阶吐血整理推荐书单

    推荐一下「算法与数据结构」从入门到进阶的书单. 一.入门系列 这些书籍通过图片.打比方等通俗易懂的方法来讲述,让你能达到懂一些基础算法,线性表,堆栈,队列,树,图,DP算法,背包问题等,不要求会实现, ...

  3. python教材免费版-北大内部教材python版算法与数据结构PDF电子书免费下载

    自从第一台需要人们用线缆和交换机向其传达指令的电子计算机问世以来,编程已发生了巨大改变.计算机科技的革新给计算机科学家提供了越来越多的工具和平台,方便他们在社会的各个领域一显身手.高速处理器.高速网络 ...

  4. python算法书籍-有哪些用 Python 语言讲算法和数据结构的书?

    1.Python数据结构篇 数据结构篇主要是阅读[Problem Solving with Python](Welcome to Problem Solving with Algorithms and ...

  5. python数据结构视频百度云盘_数据结构与算法Python视频领课

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 课程简介: 本课程包含Python编程基础的基本语法及变量,基本数据结构,Code Structure,Function.让学生在学会Python基础的同 ...

  6. python求数组最大值_Python算法与数据结构--求所有子数组的和的最大值

    Python算法与数据结构--求所有子数组的和的最大值 玄魂工作室秘书 玄魂工作室 昨天 题目:输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. ...

  7. python数据结构题目_《数据结构与算法Python语言描述》习题第二章第三题(python版)...

    ADT Rational: #定义有理数的抽象数据类型 Rational(self, int num, int den) #构造有理数num/den +(self, Rational r2) #求出本 ...

  8. 算法与数据结构(part2)--Python内置类型性能分析

    学习笔记,仅供参考 文章目录 算法与数据结构--基于python Python内置类型性能分析 timeit模块 计时器类timeit.Timer 计时器类下的timeit.Timer.timeit方 ...

  9. python算法和数据结构_Python中的数据结构和算法

    python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...

最新文章

  1. 华农oj Problem K: 负2进制【有技巧构造/待补】
  2. 装机必备工具(普通家庭版)
  3. 读书笔记 effective c++ Item 18 使接口容易被正确使用,不容易被误用
  4. jQuery 遍历 each()方法
  5. android.view.WindowManager$BadTokenException
  6. 【剑指Offer学习】【面试题40:数组中仅仅出现一次的数字】
  7. jdbc中mySQL语句单双引号_JDBC: 执行MySQL语句时,bit类型的数值在java代码中应该怎么表示?...
  8. H264/H265之NALU结构(三)
  9. oracle 客户端配置
  10. exp 导数oracle,指数函数 exp(x) 导数的直接求法
  11. mysql commit用法_sql commit用法
  12. 解构网约车界“拼多多”:花小猪背后的商业逻辑和价值空间
  13. 【python 淘宝爬虫】淘宝信誉分抓取
  14. wamp5 mysql 启动不了_wamp5安装问题之mysql无法启动
  15. 如何用工具自动修复数字IC后端设计实现绕线后的Physical DRC_
  16. 实时时钟(RTC)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. ubuntu18分辨率变低,无法调整,最高只有1024*768
  18. 质量管理中的“二八法则”
  19. 1 海康视觉平台VisionMaster 上手系列: 开篇
  20. 基于AI视觉技术构建柔性生产数字化车间

热门文章

  1. java枚举怎么编译不行的_java枚举类型
  2. 程序员应该如何规划自己的人生与书写履历?
  3. 关于Ecllipse
  4. java解码p7b证书文件,通过OpenSSL解码X509证书文件
  5. mysql联合查询语句详解_实例讲解MySQL联合查询
  6. Error: Module “xxx“ does not exist in container. / antd pro v5启用qiankun报错 / 同时使用mfsu和qiankun报错
  7. Web前端开发学习误区,你掉进去了没?
  8. Spring @Value取值为null或@Autowired注入失败
  9. 运用Arc Hydro提取河网
  10. (转)zabbix3.4使用percona-monitoring-plugins监控mysql