摘要: 本文是《数据结构与程序设计(c++语言描述)》中关于二分搜索的学习笔记,二分搜索的思想很简单,但是要实现一个正确最优的算法确不是那么容易。第一个二分搜索算法于1946年就出现,然而第一个完全正确的二分搜索算法直到1962年才出现,所以,认真点+留神点~ ^_^
首先,介绍一下二分搜索的思想:对于一个有序表而言,要查找某个关键字,首先比较表中央的那个节点,如果该节点的关键字与目标关键字相同,则找到。若比目标小,则目标关键字肯定出现在该点的右半段内。反之则出现在左半段。这样,每次比较后就能丢去一半的节点,对于一般的有序线性表而言,其搜索效率大大高于顺序查找。
第一个版本的二分搜索:
根据算法,我们设置三个位置指示器:low, high, mid,分别指向当前搜索范围的最低位置、最高位置和中间位置,中间位置由mid = (low+high)/2决定。首先将mid处的关键字与key比较,相同则返回mid;若key较大,令low=mid+1继续搜索右半段;若key较小,令high=mid-1继续搜索左半段。这样,搜索范围不断减小,high-low也越来
阅读全文