2、算法导论笔记
来源:互联网 发布:淘宝课堂网址 编辑:程序博客网 时间:2024/05/18 00:17
2、算法导论笔记 - 插入排序
排序问题
排序问题的形式定义如下:
待排序的元素称为键。
插入排序
插入排序对于少量元素很有效。它的原理类似于打扑克时牌手摸牌的方式:开始时,牌手左手为空,所有牌牌面向下放在牌桌上,牌手每次从桌上摸一张牌,并插入到左手正确的位置中。寻找正确位置的方法是:将摸到的牌从右向左,依次和手中的牌进行比较。无论何时,左手中的牌都是排好序的。
这里使用过程INSERTION-SORT
表示插入排序的伪码。它以一个拥有
插入排序伪码及实现
插入排序伪码:
插入排序Python实现:
def insertion_sort(seq): """ 插入排序 :param seq: 待排数组 :return: seq """ length = len(seq) for i in range(1, length): key = seq[i] j = i - 1 while j >= 0 and seq[j] > key: seq[j + 1] = seq[j] j -= 1 seq[j + 1] = key return seq
循环不变式以及算法正确性
这里以数组
索引
循环不变式可以帮助我们理解算法的正确性,共有三种性质:
- 初始:在每次循环迭代之前算法是正确的。
- 维持:如果算法在某次迭代开始之前是正确的,那么,在下次迭代开始之前算法也应该是正确的。
- 终止:迭代结束后,算法给出一个有用的性质。
插入排序算法分析
过程INSERTION-SORT
执行所需的时间取决于输入的规模,此外,根据输入的排序程度,过程INSERTION-SORT
排序两个同等输入规模的输入也会需要不同时间。这里我们使用一个输入规模的函数表示算法的运行时间。
这里先给出过程INSERTION-SORT
中每条语句的时间“代价”和语句的执行次数。使用while
循环的测试次数。通常,循环的测试要比循环体多执行一次。
算法的运行时间就是每条语句执行时间的总和。设
即使给定输入规模,算法的运行时间也取决于输入的元素。例如,过程
INSERTION-SORT
中,最佳情况发生在输入已排好序的时候,此时对所有可以使用
如果输入数组是倒序的,就会出现最坏情况。有:
最坏情况下算法总的运行时间为:
最坏情况下的运行时间可以用
阅读全文
0 0
- 算法导论笔记<2>
- 2、算法导论笔记
- 算法导论学习笔记-2
- 算法导论笔记 红黑树(2)
- 算法导论学习笔记-2
- 算法导论学习笔记--2--堆排序
- 《算法导论》笔记:第2章
- 算法导论-学习笔记(2)
- 《算法导论》笔记一
- MIT算法导论笔记
- 【算法导论笔记】排序
- 《算法导论》学习笔记
- 《算法导论》学习笔记
- 《算法导论》笔记汇总
- 《算法导论》笔记汇总
- 算法导论笔记第一章
- 算法导论 笔记
- 算法导论学习笔记
- tensorflow image api (持续更新)
- Windows下Nginx+Tomcat整合的安装与配置
- CSS基础1-双飞翼布局
- java网络编程--URL与URLConnection
- 百度地图动态的设置中心坐标和缩放级别
- 2、算法导论笔记
- Java 开发环境配置
- Android Notification 开发经验分享
- 设备识别跳转电脑端自动跳转手机端js
- Unity_虚拟现实_自我见解
- <33>——Search in Rotated Sorted Array
- 三秒钟后跳转
- PullToRefresh使用
- 关于mysql inner join 连接查询的优化