软件环境:Python 3.7.0b4

一、选择排序

# 找出数组中的最小元素
def findSmallest(arr):# 存储最小的值smallest = arr[0]# 存储最小元素的索引smallest_index = 0for i in range(1, len(arr)):if arr[i] < smallest:smallest_index = ismallest = arr[i]      return smallest_index# 排序算法
def selectionSort(arr):newArr = []for i in range(len(arr)):# 找出数组中最小的元素,并将其加入到新的数组中smallest = findSmallest(arr)newArr.append(arr.pop(smallest))return newArr

二、课后练习

答案(如果有更好的欢迎评论或私信~)

2.1:每天都在列表中添加支出项,但每月只读取支出一次。而数组的读取速度很快,但插入速度慢;链表的读取速度慢,但插入速度快。因为我们执行的插入操作比读取操作多,因此使用链表合适。

2.2:经常要执行插入操作——服务员添加点菜单,而链表的插入速度很快;而且不需要执行查找和随机访问操作(这是数组擅长的),因为厨师总是从队列中取出第一个点菜单。综上所述,使用链表合适。

2.3:有序数组。数组让你能够随机访问从而立即获取数组中间的元素,而使用链表无法这样操作。要获取链表中间的元素,就必须从第一个元素开始,沿链接逐渐找到这个元素。

2.4:数组的插入速度很慢。另外如果要使用二分查找算法来查找用户名,数组必须是有序的,因此每次插入用户名后,都必须对数组进行排序。

2.5:查找时,其速度比数组慢,但比链表快;而在插入时,其速度比数组快,但与链表相当。因此,除了查找速度比数组慢,其他方面并不比链表慢。

三、小结

  • 需要存储多个元素时,可使用数组或链表。
  • 数组的元素都是连在一起的,就像一节节车厢。
  • 链表的元素是分散开的,其中每个元素都存储了下一个元素的地址。
  • 数组的读取速度很快。
  • 链表的插入和删除的速度很快。
  • 在同一个数组中,所有元素的类型都必须相同(都为int、double等)。

转载于:https://www.cnblogs.com/OctoptusLian/p/9026874.html

《算法图解》第二章笔记与课后练习_选择排序算法相关推荐

  1. 算法图解第二章笔记与习题(选择排序)

    算法图解第二章笔记与习题(选择排序) 文章目录 算法图解第二章笔记与习题(选择排序) 2.2 数组和链表 2.2.1 链表 2.2.2 数组 2.2.3 数组和链表的读取.插入和删除操作的时间复杂度 ...

  2. 《算法图解》学习笔记(二):选择排序(附代码)

    欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...

  3. 《算法图解》学习笔记(十):K 最近邻算法(附代码)

    欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...

  4. 《算法图解》第四章笔记与课后练习_快速排序算法

    软件环境:Python 3.7.0b4 一.分而治之 工作原理: 找出简单的基线条件: 确定如何缩小问题的规模,使其符合基线条件. # 4.2 def count(list):if list == [ ...

  5. 《算法图解》系列笔记(七)—— 狄克斯特拉算法

    狄克斯特拉算法(Dijkstra's algorithm) 广度优先搜索来查找两点之间的最短路径,那时"最短路径"的意思是段数最少.在狄克斯特拉算法中,你给每段都分配了一个数字或权 ...

  6. 《算法图解》学习笔记(四):分而治之和快速排序(附代码)

    欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...

  7. 选择排序算法详解之C语言版

    一.算法原理 选择排序属于不稳定排序法,是一种常用的排序算法,其时间复杂度为O(n^2). 所谓的不稳定排序算法是指在一组数据中存在多个相同的数据,但是在排序之后,相同数据的前后位置会发生改变.例如有 ...

  8. 《算法图解》学习笔记(七):狄克斯特拉算法(附代码)

    欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...

  9. 《算法图解》学习笔记(六):图和广度优先搜索(附代码)

    欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...

最新文章

  1. 营销3.0时代的营销特征
  2. java面试(2)--大数据相关
  3. 游戏在ios和android,陈情令手游ios和安卓互通吗 ios和安卓能一起玩吗
  4. mysql六:索引原理与慢查询优化
  5. Objective C ARC 使用及原理
  6. linux pam模块 cron,Linux-PAM 1.1.2 中文文档 - 6.32. pam_tally-登录计数器(统计)模块 | Docs4dev...
  7. Hyper-V虚拟机安装及网卡无法找到,驱动无法安装解决办法
  8. MEF董事、中国电信云计算中心主任赵慧玲:MEF第三类网络
  9. iOS WKWebView与JS交互传值
  10. 使用thrift做c++,java和python的相互调用 - jinghong - ITeye技术网站
  11. 关于空间分析的一点小思考
  12. 方法一 NTC热敏电阻转换温度的计算方式(分段法)
  13. nvme固态硬盘开机慢_固态硬盘速度慢?三步教你开启SSD全速模式!
  14. svn分支合并到主干
  15. SQL笛卡尔积查询的典型应用
  16. nginx上传文件大小报错500的解决办法
  17. 让android支持AZERTY法语键盘
  18. SU2 CFD代码阅读
  19. (论文)Persuading Customers to Buy Early: The Value of Personalized
  20. 眼睛里10年的“肉芽”长大了,这究竟是怎么回事?

热门文章

  1. 谷歌母公司将分拆出新量子公司,名为“沙箱”
  2. 面试官:编写一个 SQL 查询,找出每个部门工资第二高的员工
  3. 什么是单镜头反光相机
  4. 手机越“清理”越卡顿,清理软件“坑”过你吗?
  5. 想问问你们都是什么时候考驾照的?
  6. 好的营销,往往叫广深高速
  7. 创业失败感悟第二十七天
  8. 为什么很多人只提苹果手机比安卓手机流畅耐用,却不提苹果手机比安卓手机贵几倍?
  9. In the interview, Clem revealed that his first
  10. 线程概念 多线程模型