C#,数据检索算法之插值搜索(Interpolation Search)的源代码

数据检索算法是指从数据集合(数组、表、哈希表等)中检索指定的数据项。

数据检索算法是所有算法的基础算法之一。

本文提供插值搜索(Interpolation Search)的源代码。

1 文本格式

using System;

namespace Legalsoft.Truffer.Algorithm
{
    public static class ArraySearch_Algorithm
    {
        /// <summary>
        /// 插值搜索
        /// </summary>
        /// <param name="arr"></param>
        /// <param name="left"></param>
        /// <param name="right"></param>
        /// <param name="x"></param>
        /// <returns></returns>
        public static int Interpolation_Search(int[] arr, int left, int right, int x)
        {
            int pos;
            if (left <= right && x >= arr[left] && x <= arr[right])
            {
                pos = left + (((right - left) / (arr[right] - arr[left])) * (x - arr[left]));
                if (arr[pos] == x)
                {
                    return pos;
                }
                if (arr[pos] < x)
                {
                    return Interpolation_Search(arr, pos + 1, right, x);
                }
                if (arr[pos] > x)
                {
                    return Interpolation_Search(arr, left, pos - 1, x);
                }
            }
            return -1;
        }

    }
}
 

————————————————————

POWER BY TRUFFER.CN

2 代码格式

using System;

namespace Legalsoft.Truffer.Algorithm
{
    public static class ArraySearch_Algorithm
    {
        /// <summary>
        /// 插值搜索
        /// </summary>
        /// <param name="arr"></param>
        /// <param name="left"></param>
        /// <param name="right"></param>
        /// <param name="x"></param>
        /// <returns></returns>
        public static int Interpolation_Search(int[] arr, int left, int right, int x)
        {
            int pos;
            if (left <= right && x >= arr[left] && x <= arr[right])
            {
                pos = left + (((right - left) / (arr[right] - arr[left])) * (x - arr[left]));
                if (arr[pos] == x)
                {
                    return pos;
                }
                if (arr[pos] < x)
                {
                    return Interpolation_Search(arr, pos + 1, right, x);
                }
                if (arr[pos] > x)
                {
                    return Interpolation_Search(arr, left, pos - 1, x);
                }
            }
            return -1;
        }

    }
}

最近更新

  1. TCP协议是安全的吗?

    2024-01-30 03:32:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-30 03:32:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-30 03:32:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-30 03:32:01       20 阅读

热门阅读

  1. OpenSSH 9.6/9.6p1 (2023-12-18)的发布说明(中文译文)

    2024-01-30 03:32:01       41 阅读
  2. Apache孵化器领路人与导师的职责

    2024-01-30 03:32:01       46 阅读
  3. jQuery 和 Zepto 的区别? 各自的使用场景?

    2024-01-30 03:32:01       36 阅读
  4. react的hooks的useCallback:

    2024-01-30 03:32:01       37 阅读
  5. python笔记9

    2024-01-30 03:32:01       28 阅读
  6. 如何评价搜索算法的好坏?多角度解析

    2024-01-30 03:32:01       40 阅读
  7. js深拷贝和浅拷贝经典面试题都有方法可以实现

    2024-01-30 03:32:01       32 阅读