列表查找以及二分查找
2018-01-31 23:33
176 查看
一、列表查找
1、列表查找:从列表中查找指定元素
输入:列表、待查找元素
输出:元素下标或未查找到元素
2、顺序查找:从列表第一个元素开始,顺序进行搜索,直到找到为止。返回找到的那个索引
3、二分查找:从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半。
二分查找:时间复杂度是O(logn)
二分查找的前提:列表是有序的
切片的复杂读是O(n) #因为切的时候是赋值的
二分查找示例
二、列表排序
1、列表排序
将无序列表变为有序列表
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、应用场景
各种榜单
各种表格
给二分查找用
给其他算法用
输入:无序列表
输出:有序列表
相关文章推荐
- (转载)如何写出正确的二分查找?——利用循环不变式理解二分查找及其变体的正确性以及构造方式
- 如何写出正确的二分查找?——利用循环不变式理解二分查找及其变体的正确性以及构造方式
- lintcode-排序列表转换为二分查找树-106
- 【二分查找】在排序数组中,找出给定数字的出现次数 以及二分其他应用
- 彻底轻松搞定顺序存储结构元素的二分查找的时间复杂度优势以及如何算时间复杂度
- 二分模板以及STL中的查找
- 排序列表转换为二分查找树
- java数组的封装以及二分查找
- 判断一个数组是否已经排好序以及二分查找
- 从文件中读取数据以及二分查找
- 二分模板以及STL中的查找
- 如何写出正确的二分查找?——利用循环不变式理解二分查找及其变体的正确性以及构造方式
- 二分查找以及二分查找的时间复杂度
- 排序列表转换为二分查找树
- 二分查找之美:二分查找及其变体的正确性以及构造方式
- 如何写出正确的二分查找?——利用循环不变式理解二分查找及其变体的正确性以及构造方式
- 二分查找需要注意的问题,以及在数据库内核中的实现
- 再看冒泡和选择排序以及折半查找(二分查找)
- lintcode-106-排序列表转换为二分查找树
- ns3根据五元组来查找端点列表,以及转送上层的处理流程