zoukankan      html  css  js  c++  java
  • py_二分查找

    '''
    查找:在一些数据元素中,通过一定的方法找出与关键字相同元素的过程,
    
        列表查找:从列表中查找指定元素
            输入:列表、待查找元素
            输出:元素下标(未找到元素时一般返回None或-1)
        内置列表查找函数:index()
    '''
    # 顺序查找: 线性查找,从列表的第一个元素开始,顺序进行搜索,直到找到元素或搜索到列表的最后一个元素
    # 时间复杂度 O(n)  n---列表的长度  循环过程中无减半
    def linear_search(li,val): # li 列表    val 待查找元素
        for ind,v in enumerate(li):
            if v == val:
                return ind
        else:
            return None
    # 二分查找 : 折半查找,从有序列表中的初始候选区li[O:n]开始,通过对待查找的值与候选区中间的值的比较,
    #             可以使候选区少一半
    #  li[1,2,3,4,5,6,7,8,9]
    def binary_search(li,val):
        left = 0
        right = len(li) - 1
        while  left <= right:# 筛选候选区值
            mid = (left + right) // 2
            if li[mid] == val:
                return mid
            elif li[mid] > val:#待查找值在mid的左侧
                right = mid - 1
            else:# li[mid] 值小于val 意味着带查找的值在mid右侧
                left = mid + 1
        else:
            return None        
    
    
    li = [1,2,3,4,5,6,7,8,9]
    print(li)
    print(binary_search(li,3))
                 
                
    

      

  • 相关阅读:
    汉字的几何中心
    输入带空格的string类型字符串 c++
    cin函数返回值
    win7玩游戏两边有黑条
    unresolved external symbol __imp__WSACleanup@0
    sizeof和strlen
    printf 函数返回值
    clone() 操作系统实验
    unsigned char 与 char
    【转】向字符数组输入空格的方法
  • 原文地址:https://www.cnblogs.com/c-jw/p/12571353.html
Copyright © 2011-2022 走看看