你应该懂点算法-二分查找
问题:数组中查找某一项数据 。
例如 int array[]={18,5,8,2,15,58,78}; 查找58
(1)第一种方案:从数组第一项开始查找(顺序查找),如果找到58打印对应的下标位置,代码如下
以上代码可以看到,如果数据量很大并且位置很靠后,查询速度会非常慢(例如sql 查询第一百万条数据,计算机很傻的,会从第一条开始扫描磁盘,直到扫描到第一百万条数据,排除加索引情况)。
(2)第二种方案,咱门的注脚上场 二分查找。它每次都先和中间值比较。这样每次都把查找范围降低了一半,
例如 还是查找58位置, 先要找中间值(排序后中间下标),上图数据中间值是15,58先和15比较,58>15,那15左边的数据不考虑了,右边只剩下18,58,78。 然后在找到中间值,这里是58,然后58和58 比较。相等 查找结束。
总结:二分执行了2次,顺序查找执行了5次,比第一种顺序查找效率高。
但是二分也有缺点 要先排序 。
测试很累,开始留作业了。以上实现数据类型是int,那字符串能否用二分查找呢?