码迷,mamicode.com
首页 > 其他好文 > 详细

列表查找及二分查找

时间:2018-12-27 03:24:55      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:nbsp   比较   log   def   代码   print   span   cond   有序列表   

一、列表查找

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

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

输入:无序列表

输出:有序列表

 

列表查找及二分查找

标签:nbsp   比较   log   def   代码   print   span   cond   有序列表   

原文地址:https://www.cnblogs.com/ladder/p/10182687.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!