python学习13-搜索和排序
来源:互联网 发布:axentwear淘宝 编辑:程序博客网 时间:2024/06/05 08:21
一、主要的搜索方法
1.线性搜索
#哨兵搜索#主要思路是在列表结尾加上一个v,然后搜索到v之后表示结束。搜索结束之后再将v删除,当作没发生一样def linear_search2(v,L): L.append(v) #在列表尾部加上一个v i=0 while L[i]!=v: i+=1 L.pop() #删除列表尾部加入的那个v return iS=[1,3,1,5,7,9,5,4,2]linear_search1(4,S)#哨兵搜索#主要思路是在列表结尾加上一个v,然后搜索到v之后表示结束。搜索结束之后再将v删除,当作没发生一样def linear_search2(v,L): L.append(v) #在列表尾部加上一个v i=0 while L[i]!=v: i+=1 L.pop() #删除列表尾部加入的那个v return iS=[1,3,1,5,7,9,5,4,2]linear_search2(4,S)
线性搜索运行的时间:
import time #导入时间模块def time(v,L)t1=time.time()linear_search(v,L)t2=time.time()return (t2-t1)*1000 #返回的是秒
总结:基本线性搜索比list.index()多花了近7倍的时间,而其他两种算法比list.index()慢了4倍。而且随着搜索列表数据的增多,所花费的时间也是呈线性增长的。
二、二分搜索
#二分搜索,就是将列表不断2分,左边的总是偏小,右边的总是偏大。N个值可以在log2 N步以内搜索完毕。大前提是这个列表必须排好序def binary_search(v,L): #找到需要搜索的数值v并且返回其在列表中的索引 i=0 j=len(L)-1 while i!=j+1: m=(i+j)/2 if L[m]<v: i=m+1 else: j=m-1 if 0<=i<len(L) and L[i]==v: return i else: return -1l=[2,3,4,5,6,7,8,9]binary_search(4,l)
0 0
- python学习13-搜索和排序
- Python学习3:搜索路径和模块
- Python Cookbook 2 ——搜索和排序
- 排序和搜索
- 排序和搜索讲解
- 42、lucene和机器学习进行全文搜索,并排序
- Python学习笔记:归并排序和快速排序
- 【python学习笔记】Python中排序sorted()和list.sort()
- lucene学习之搜索排序
- 数组的排序和搜索
- 搜索和排序简单概念
- 排序和搜索算法总结
- 排序算法和搜索算法
- JavaScript实现排序和搜索
- 【Python排序搜索基本算法】之二叉树的深度和宽度
- 【python】路径搜索和搜索路径
- 学习python 快速排序
- 一步一步跟我学习lucene(13)---lucene搜索之自定义排序的实现原理和编写自己的自定义排序工具
- springmvc+spring+mybatis+maven项目集成shiro进行用户权限控制
- Qt之MVC使用
- pixhawk资料总结(随时更新)
- sqlserver用sql来操作数据库
- 随笔1
- python学习13-搜索和排序
- 【Android消息处理机制】Handler中sendEmptyMessage与sendMessage的区别和sendMessageAtTime()与sendEmptyMessageDelay()区
- Aliyun+Centos的配置Apache
- android 情景模式设置
- Android Material Design之Toolbar与Palette实践
- 开发自己PHP MVC框架
- Linux下Memcached的编译安装
- ffmpeg实现音频resample(重采样)
- Github 配置SSH KEY