算法----列表查找以及列表排序

Posted jiangshanduojiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法----列表查找以及列表排序相关的知识,希望对你有一定的参考价值。

一、列表查找

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

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

输入:无序列表

输出:有序列表

 

以上是关于算法----列表查找以及列表排序的主要内容,如果未能解决你的问题,请参考以下文章

《图解算法》--二分查找选择排序递归

查找与排序算法(Searching adn Sorting)

算法与数据结构

数据结构与算法-查找算法

二分查找算法

列表查找及二分查找