算法 -- 列表查找以及列表排序
一、列表查找
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、应用场景
- 各种榜单
- 各种表格
- 给二分查找用
- 给其他算法用
输入:无序列表
输出:有序列表