前几天读了《算法神探》,挺有意思一本书,使我对数据结构有了更深理解。笔记如下:
一、二分搜索
1、原理:
请注意,通过这几次的操作,此时虽然下界已经是目标值了(v=15),但是
我们仍需要继续搜索,直到中间值指向目标值。这是因为二分搜索是对中间
值进行判定,而不会判定上界和下界是否是目标值。
如果目标值不在数组中会发生什么呢?在搜索过程中,上下界之间的距
离会越来越近,直到它们之间没有任何还未检查过的值。因为我们总是将其
中一个界限移动到中间值的另一边,所以我们可以在IndexHigh<Indexlow的
时候停下来,这个时候就可以保证目标值不在数组中了。
2、二分搜索法背后的基本思想——
利用数据中的规律去不断地将搜索的范围减半——远比二分搜索法具体的应用更重要。
二、广度优先搜索
1、
广度优先搜索从一个起点开始,慢慢沿着一个边界推进。所以理所当然地它就会由短到长地尝试所有可能的字符串。
如图,搜索算法在尝试完当前层的所有可能密码后,才会进入下一层。
整个广度搜索过程,就像水面上的水波逐步扩散的过程。
2、原理:
广度优先搜索是一个按顺序依次尝试可能的搜索选项的算法。
换句话说,它每次都会