python学习13-搜索和排序
2016-07-08 11:19
381 查看
一、主要的搜索方法
1.线性搜索
线性搜索运行的时间:
总结:基本线性搜索比list.index()多花了近7倍的时间,而其他两种算法比list.index()慢了4倍。而且随着搜索列表数据的增多,所花费的时间也是呈线性增长的。
二、二分搜索
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 i S=[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 i S=[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 -1 l=[2,3,4,5,6,7,8,9] binary_search(4,l)
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- 搜狗百度360市值齐跌:搜索引擎们陷入集体焦虑?
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例