用数组实现静态顺序查找二分查找

查找:根据某个给定值K,从集合R中找到与K相同记录,这就是查找。

静态查找:就是数据制作好后,不会在改动,只是查找,没有删除和插入。比如字典就是静态查找,字典制作好后,字不会在变动,用时查一下。

这类静态查找算法,数据一般可以放入数组中,先将数据全部写入数组,再来获取。

下面写个顺序查找来实现的代码:

以上顺序代码有1个关键是,将数组0下标位置元素当“哨兵”,这是一个设计技巧。好处就是在for循环体内不用每次判断下标。

当找到时就返回找到的下标,当没有找到就会找到0下标,返回0就代表没有找到。

可以看出顺序查找算法时间复杂度是O(n),最好情况就是第一个找到,最坏情况就是最后一个找到,平均时间复杂度是是O(n/2)。

有没有更好的查找算法?

有的,二分查找会比顺序查找更快。

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

下面写用二分查找代码:

二分查找前提是数据都排序好,具体二分查找也可以看这篇:二分查找算法

二分查找算法复杂度为对数时间复杂度O(logN)。

《用数组实现静态顺序查找二分查找》上有1条评论

评论已关闭。