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

    一、列表查找

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

    • 输入:列表、待查找元素
    • 输出:元素下标或未查找到元素

    2、顺序查找:从列表第一个元素开始,顺序进行搜索,直到找到为止。返回找到的那个索引
    3、二分查找:从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半。

       二分查找:时间复杂度是O(logn)
          二分查找的前提:列表是有序的

    切片的复杂读是O(n) #因为切的时候是赋值的

    二分查找示例

    复制代码
    def serach(li,val):
        low = 0  #开始索引
        high = len(li) - 1  #结束索引
        while low<=high:
            mid = (low+high)//2
            if li[mid] > val:   #如果中间值比传进来的值大就从中间值的左边找
                high = mid-1
            elif li[mid]<val:
                low = mid +1
            else:
                return mid
        else:
            return -1
    
    li = list(range(0,101,2))
    print(serach(li,98))
    
    
    
    # ==================递归版的二分查找===========
    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))
    复制代码

    二、列表排序

    1、列表排序

    将无序列表变为有序列表

    2、应用场景

    • 各种榜单
    • 各种表格
    • 给二分查找用
    • 给其他算法用

    输入:无序列表

    输出:有序列表

     
     
  • 相关阅读:
    软件测试人员的年终绩效考核怎么应对
    收藏
    顶踩组件 前后两版
    订阅组件
    hdu 1963 Investment 完全背包
    hdu 4939 Stupid Tower Defense 动态规划
    hdu 4405 Aeroplane chess 动态规划
    cf 414B Mashmokh and ACM 动态规划
    BUPT 202 Chocolate Machine 动态规划
    hdu 3853 LOOPS 动态规划
  • 原文地址:https://www.cnblogs.com/ladder/p/10182687.html
Copyright © 2011-2022 走看看