zoukankan      html  css  js  c++  java
  • 列表查找以及二分查找

    列表查找:从列表中查找指定元素

    • 输入:列表、待查找元素
    • 输出:元素下标或未查找到元素
    list1=[1,3,4,5,6,8,9,12,15,20]
    print(list1.index(8))
    def listSearch(list,num):
        i=0
        while i<len(list)-1:
            if list[i]==num:
                return i
            else:
                i=i+1
            
        return None

    二分查找

    二分查找的前提是列表是有序的

    def search(arr,num):
        low=0
        high=len(arr)-1
        while low <= high:
            mid=(low+high)//2
            if arr[mid]>num:
                high=mid-1
            elif arr[mid]<num:
                low=mid+1
            else:
                return mid
        return None
    
    list1=[1,3,4,5,6,8,9,12,15,20]
    print(search(list1, 8))

    递归版二分查找:

    def bin_serach_rec(li,val,low,high):
        if low<=high:
            mid = (low+high)//2
            if li[mid] >val:
                return bin_serach_rec(li,val,low,mid-1,)
            elif li[mid]<val:
                return bin_serach_rec(li,val,mid+1,high)
            else:
                return mid
        else:
            return
    
    li = list(range(0,101,2))
    print(serach(li,98))
  • 相关阅读:
    MD5算法MFC实现
    asp.net2.0新特点
    file format
    C专家编程第二章学习笔记
    Bye Czech golden generation
    中间层
    学完谭C之后
    C语言学习之路
    荀子劝学篇
    C语言常用转义字符表
  • 原文地址:https://www.cnblogs.com/catxjd/p/9026895.html
Copyright © 2011-2022 走看看