搜索算法可以有很多种分类方式。底层的容器是静态的还是动态的,换句话说,搜索时插入和删除是否是交错进行的?是否值得花费计算量去预处理数据以便加速后续的查询?数据是否有统计的特性可以利用的?我们应该对数据直接操作数据进行变换?
我们在此只考虑在有序数组中存储的静态数据。适用于动态更新的数据结构是堆、哈希表、和二叉搜索树的主题。
首先探讨的问题是有关二分查找,后面问题属于通用搜索。
1. 在有序数组中搜索第一个k:
给定一个有序数组和一个key,返回这个key在数组中第一次出现的index。
提示:当每一个元素都等于k时会怎么样?第一次看到k后不要停止