zoukankan      html  css  js  c++  java
  • 算法学习【第2篇】:列表查找以及二分查找

    列表查找以及二分查找

    一、列表查找

    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、应用场景

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

    输入:无序列表

    输出:有序列表

  • 相关阅读:
    Bootstrap 2.3.2导航问题
    隐藏wordpress登陆后台
    WordPress 中文图片 上传 自动重命名
    wordpress上传附件提示抱歉,出于安全的考虑,不支持此文件类型
    移动端适配
    项目中常见的正则校验
    vue中 的 this.$nextTick (Vue中DOM的异步更新)
    vue中使用webscoket
    登堂入室---进阶代码
    Flex布局
  • 原文地址:https://www.cnblogs.com/mqhpy/p/11371317.html
Copyright © 2011-2022 走看看