《算法图解》第二章笔记与课后练习_选择排序算法
软件环境: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
《算法图解》第二章笔记与课后练习_选择排序算法相关推荐
- 算法图解第二章笔记与习题(选择排序)
算法图解第二章笔记与习题(选择排序) 文章目录 算法图解第二章笔记与习题(选择排序) 2.2 数组和链表 2.2.1 链表 2.2.2 数组 2.2.3 数组和链表的读取.插入和删除操作的时间复杂度 ...
- 《算法图解》学习笔记(二):选择排序(附代码)
欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...
- 《算法图解》学习笔记(十):K 最近邻算法(附代码)
欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...
- 《算法图解》第四章笔记与课后练习_快速排序算法
软件环境:Python 3.7.0b4 一.分而治之 工作原理: 找出简单的基线条件: 确定如何缩小问题的规模,使其符合基线条件. # 4.2 def count(list):if list == [ ...
- 《算法图解》系列笔记(七)—— 狄克斯特拉算法
狄克斯特拉算法(Dijkstra's algorithm) 广度优先搜索来查找两点之间的最短路径,那时"最短路径"的意思是段数最少.在狄克斯特拉算法中,你给每段都分配了一个数字或权 ...
- 《算法图解》学习笔记(四):分而治之和快速排序(附代码)
欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...
- 选择排序算法详解之C语言版
一.算法原理 选择排序属于不稳定排序法,是一种常用的排序算法,其时间复杂度为O(n^2). 所谓的不稳定排序算法是指在一组数据中存在多个相同的数据,但是在排序之后,相同数据的前后位置会发生改变.例如有 ...
- 《算法图解》学习笔记(七):狄克斯特拉算法(附代码)
欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...
- 《算法图解》学习笔记(六):图和广度优先搜索(附代码)
欢迎关注WX公众号:[程序员管小亮] python学习之路 - 从入门到精通到大师 文章目录 欢迎关注WX公众号:[程序员管小亮] [python学习之路 - 从入门到精通到大师](https://b ...
最新文章
- 营销3.0时代的营销特征
- java面试(2)--大数据相关
- 游戏在ios和android,陈情令手游ios和安卓互通吗 ios和安卓能一起玩吗
- mysql六:索引原理与慢查询优化
- Objective C ARC 使用及原理
- linux pam模块 cron,Linux-PAM 1.1.2 中文文档 - 6.32. pam_tally-登录计数器(统计)模块 | Docs4dev...
- Hyper-V虚拟机安装及网卡无法找到,驱动无法安装解决办法
- MEF董事、中国电信云计算中心主任赵慧玲:MEF第三类网络
- iOS WKWebView与JS交互传值
- 使用thrift做c++,java和python的相互调用 - jinghong - ITeye技术网站
- 关于空间分析的一点小思考
- 方法一 NTC热敏电阻转换温度的计算方式(分段法)
- nvme固态硬盘开机慢_固态硬盘速度慢?三步教你开启SSD全速模式!
- svn分支合并到主干
- SQL笛卡尔积查询的典型应用
- nginx上传文件大小报错500的解决办法
- 让android支持AZERTY法语键盘
- SU2 CFD代码阅读
- (论文)Persuading Customers to Buy Early: The Value of Personalized
- 眼睛里10年的“肉芽”长大了,这究竟是怎么回事?