前言:
普通查找指的是把需要查找的数和数组中的数依次对应,直到找到该数字。但如果数据庞大,则会非常耗时间,降低性能,所以二分查找是一个好方法,记录下二分查找的使用心得。打好基础,daydayup!
二分查找(折半查找)
二分查找:被查找数字每次与数组的中位数对比,若被查找数字大于中位数,则将数组比中位数小的数字舍弃,并在剩下的数字中继续取中位数与被查找数对比,直到被查找数与中位数匹配,停止查找;反之亦然,若被查找数字小于中位数,则将数组比中位数大的数字舍弃,继续对比,直到匹配
注: 如果使用二分查找,数组必须是顺序排列
数组顺序排列,可以看这篇:java常用排序算法——冒泡排序,选择排序概述
实验案例:
得到一个混乱数组,将其排序后,找出数字的相应位置
操作思路:
1,进行排序,2,进行查找
操作步骤:
1,假设数组已经排好序。(排序不做叙述)
2,设置数组起始位置变量,和结尾位置变量。中位数位置=(起始位置+结尾位置)/2。
3,让被查找数与其进行对比。设置两种情况:1,被查找数字大于中位数;2,被查找数字小于中位数。
4,将两种情况建立循环,找到数字后跳出循环。但当初始位置变量大于结尾位置变量依旧没有找到数字时,说明数组中没有该数字,同样跳出循环。
示例如下:
总结:
二分查找虽然有官方的api,可以直接使用。但重要的是二分查找的逻辑,清晰的逻辑就是进步的开始,整理结束,撒花!!