查找算法学习总结之顺序、二分、插值查找

本文是对查找算法的个人学习总结,涵盖了顺序查找(线形查找)、二分查找(折半查找)和插值查找。顺序查找的时间复杂度为O(n),适用于无序查找;二分查找的时间复杂度为O(log2n),适用于有序数组;插值查找在关键字分布均匀的有序表中效率较高,时间复杂度为O(log2(log2n))。每种查找算法都结合了代码示例进行讲解。
摘要由CSDN通过智能技术生成

供自己或有需要的朋友查询参考。

博客内容为自我总结而来,所以描述皆按本人理解,如有错误请帮忙指出来谢谢。

 

1.顺序查找(线形查找)

属于无序查找算法。从表的某端开始,按顺序进行查找。

查找成功时的平均查找长度为: ASL = 1/n(1+2+3+…+n) = (n+1)/2 。

时间复杂度为O(n)。

 

使用代码来理解

//a[]为要查询的表,key为要查询的值,n表示查询表内元素的个数
int SequenceSearch(int a[], int key, int n){
    for(int i = 0; i < n; ++i){
        if(a[i] == key){

            return i;
        }
    }
    return -1;
}

 

2.二分查找(折半查找)

属于有序查找算法。

时间复杂度:O(log2n)

实现:将数组折半,然后将中间那个数(a[mid])与要查找的值(key)进行对比。是输出,否,再与要查找的数(key)进行大小对比(判断下一次折半的是哪一边的表)。大的话,将最大下标(high)降为:折半下标(mid)-1.小的话,将最小下标(low)升为:折半下标(mid)+1(因为中间那数已经对比过,所以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值