这类的算法实在是太多了,我只能选择常用的几个(我知道的几个 )来写。
参考博客:https://www.cnblogs.com/CJT-blog/p/10475707.html
顺序查找(线性查找)
这种算法我相信大家都会,就是将所有的数据遍历一次,因此时间复杂度为O(n)。这里也不做过多的描述。
有序表—折半查找(二分查找)
- 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;
- 否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
- 重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
二分查找的时间复杂度为O(logn)
有序表—插值查找
二分法不按照1/2的比例来查找就变成插值查找了。时间复杂度为O(logn)