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

  • 相关阅读:
    群资料共享
    python 智能合约日志操作
    canvas绘制图片
    rgb随机变色
    直接用css生成三角形的问题
    纯css三层侧边栏效果
    清除浮动终极版本
    懒加载
    html5可以通用的几段代码
    jquery中animate()动画方法
  • 原文地址:https://www.cnblogs.com/liu-ke/p/13279943.html
Copyright © 2011-2022 走看看