Welcome to aparke’s blog!
顺序查找与二分查找动图展示
二分查找
百科
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
图示过程
文字叙述过程
二分查找是一种高效的查找算法。它比顺序查找快的多,虽然它需要的条件是数组是有序的。
在查找时,我们先将被查找的数和数组的中间键比较,因为数组是有序的,所有若被查找的数小于数组的中间键则这个数只可能在数组的左部分,然后将中间键的左边数组当作一个数组来进行二分查找。反之,则在数组的右部分,同样将右部分的数组当作一个数组来进行二分查找。若相等,则命中。
代码实现
public static int binarySearch(int arr[], int left, int right, int key) { |
代码增强版
二分查找的改进,如果数组中有多个相同的元素,全部找出来存到一个链表中并返回他们的数组下标
public static List<Integer> binarySearch2(int arr[], int left, int right, int key) { |
顺序查找
描述
顾名思义,查到就返回
代码实现
// 基础版线性查找,只返回第一次查找到值的第一个下标 |
代码实现2
// 加强版线性查找,返回所有查找到数字的所有下标 |