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

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

    输入:无序列表

    输出:有序列表

  • 相关阅读:
    使用 pandas 导出数据
    Vue -- 基础语法和使用
    Django-用户模块与权限系统相关
    rest-framework之权限组件
    rest-framework之认证组件
    rest-framework之解析器
    Markdown -语法说明
    rest-framework之APIView 序列化组件
    eggjs-对接微信公众号
    常用站点
  • 原文地址:https://www.cnblogs.com/TheLand/p/9250538.html
Copyright © 2011-2022 走看看