文章目录
1.本章内容
- 为阅读后续内容打下基础
- 编写第一种查找算法——二分查找
- 学习如何谈论算法的运行时间——大O表示法
- 了解一种常用的算法设计方法——递归
章节目录如下:
2.章节引言
2.1 本书主要内容
什么是算法?
算法是一组完成任务的指令。
速度快/可以解决有趣的问题的算法是我们本书研究的重点:
- 讨论二分查找&演示算法如何提高代码的速度。——第一章
- GPS设备使用图算法来计算前往目的地的最短路径——第六七八章
- 可以使用动态规划来编写下国际跳棋的AI算法——第九章
介绍算法的方法:举例&提供实例 再使用大O表示法讨论其运行时间 最后探索它可以解决的其他问题。
另外 本书将帮助我们
学习比较不同算法的优缺点——体会到改用不同的数据结构就可以让结果大不相同
2.2 问题解决技巧
本书将带我们学习一些问题解决技巧
- 喜欢开发电子游戏? ——使用图算法编写跟踪用户的AI系统
- 对推荐算法感兴趣? ——使用K最近邻算法编写推荐系统
- 发现有些问题在有限时间是不可解的? ——学习NP完全问题 来识别这样的问题并且设计找到近似答案的算法
总而言之——
读完本书 你将 熟悉一些使用最为广泛的算法。利用这些新学到的知识,你可以学习更具体的AI算法、数据库算法。
3.二分查找
3.1 什么是二分查找?
二分查找是一种算法,其输入是一个有序的元素列表。
如果要查找的元素包含在列表中,二分查找返回其位置,否则返回null
3.2 二分查找的工作原理
随便想一个1-100的数字
目的:最少的次数猜到这个数字。
怎么做到呢?
是这种方法么?
nonono
这种方法才对哦
不管要猜1-100之间的哪个数字 在7次之内都能通过二分法猜到~
结论:
对于包含n个元素的列表 用二分查找最多需要步
3.3 代码实现二分查找算法
函数binary_search接受一个有序数组和要搜索的元素。如果此元素包含在数组中,这个函数将返回其位置。
具体逻辑如下:
def binary_search(list, item):
low = 0
high = len(list) - 1
#low 和 hi