0
点赞
收藏
分享

微信扫一扫

Python 数据结构 —— 插值查找法

代码小姐 2022-02-17 阅读 56

插值查找法

  1. 是二分法查找的升级版;
  2. middle = low+ ((find_data - data[low])*(high-low)) // (data[high]//data[low]);
  3. high = middle - 1;
  4. low = middle +1;
  5. 前提条件:数据必须是排好序的;
  6. 时间复杂度:O(log2n);

代码

def Interpolation(data, find_data):
    low = 0
    high = len(data) - 1

    while low < high:

        middle = low + int((find_data-data[low])*(high-low))//(data[high] - data[low])

        if find_data == data[middle]:
            return middle
        elif find_data < data[middle]:
            high = middle - 1
        elif find_data > data[middle]:
            low = middle + 1
    return -1


if __name__ == '__main__':
    data_all = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    print(Interpolation(data_all, 3))
举报

相关推荐

0 条评论