前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2021年11月 C#版 数据结构与算法解析(插值查找)

【愚公系列】2021年11月 C#版 数据结构与算法解析(插值查找)

作者头像
愚公搬代码
发布2021-12-03 16:50:13
1690
发布2021-12-03 16:50:13
举报
文章被收录于专栏:历史专栏

插值查找是二分查找的更高效版本,它不会每次按2平分原问题规模,而是应用一个技巧来尽快的接近目标关键字。

示例

代码语言:javascript
复制
public class Program {

    public static void Main(string[] args) {
        int[] array = { 8, 11, 21, 28, 32, 43, 48, 56, 69, 72, 80, 94 };

        Console.WriteLine(InterpolationSearch(array, 80, 0, array.Length - 1));

        Console.ReadKey();
    }

    private static int InterpolationSearch(int[] array, int key, int low, int high) {
        if (low > high) return -1;
        var mid = (int)(low + ((double)key - array[low]) / 
            (array[high] - array[low]) * (high - low));
        if (array[mid] == key)
            return mid;
        else if (array[mid] > key)
            return InterpolationSearch(array, key, low, mid - 1);
        else
            return InterpolationSearch(array, key, mid + 1, high);
    }

}

在最坏的情况下插值查找的时间复杂度为: O(log(logn)) 。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/08/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档