zoukankan      html  css  js  c++  java
  • 折半查找算法(Python版)

    介绍

    二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

    前提

    必须待查找的序列有序

    时间复杂度

    O(log2n)

    原理

    1)确定该期间的中间位置K
    2)将查找的值t与array[k]比较,若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。
    3)区域确定过程:
    若array[k]>t,由于数组有序,所以array[k,k+1,……,high]>t;故新的区间为array[low, ..., K-1];
    反之,若array[k]<t对应查找区间为array[k+1, ..., high]

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Date    : 2020-07-10
    # @Author  : 流柯
    # @desc : 二分查找算法,python版
    
    def serach(array, t):
        array.sort() #排序,保证列表是有序的
        low = 0
        height = len(array) - 1
        while low <= height:
            k = (low + height) // 2
            if array[k] < t:
                low = k + 1
            elif array[k] > t:
                height = k - 1
            else:
                return k #找到后返回位置
        return -1 #找不到返回-1
    array = [1, 3, 5, 7, 9, 6, 8, 0]
    print(serach(array, 5))
    

    End

  • 相关阅读:
    Linux--sed命令
    Linux--cut命令
    Android--aapt命令
    Shell--基础知识
    Linux--vim编辑器和文件恢复
    Linux--基本命令
    Linux--添加用户
    Linux--网络配置
    SpringCloud--Ribbon负载均衡
    第一阶段冲刺4
  • 原文地址:https://www.cnblogs.com/linmo/p/13280290.html
Copyright © 2011-2022 走看看