Python天天美味(30) - python数据结构与算法之快速排序

简介:

快速排序的原理是将取出第一个数,将整个数组分为两波,一拨都大于这个数,另一波都小于这个数,然后递归用同样的方法处理第一波数字和第二波数字。都说是“快速排序”,效率肯定比其他的一般排序算法高,下面我们就来验证一把,比较一下所谓的“快速排序”和“冒泡排序”的性能差异。

1. 快速排序

def  quicksort ( data ,  low  =  0 ,  high  =  None ):
     if  high  ==  None :
         high  =  len ( data )  -  1
     if  low  <  high :
         s ,  i ,  j  =  data [ low ],  low ,  high
         while  i  <  j :
             while  i  <  j  and  data [ j ]  >=  s :
                 j  =  j  -  1
             if  i  <  j :
                 data [ i ]  =  data [ j ]
                 i  =  i  +  1
             while  i  <  j  and  data [ i ]  <=  s :
                 i  =  i  +  1
             if  i  <  j :
                 data [ j ]  =  data [ i ]
                 j  =  j  -  1
         data [ i ]  =  s
         quicksort ( data ,  low ,  i  -  1 )
         quicksort ( data ,  i  +  1 ,  high )

2. 冒泡排序

def  bubblesort ( data ):
     for  i  in  range ( len ( data )  -  1 ,  0 ,  - 1 ):
         for  j  in  range ( 0 ,  i ):
             if  data [ j ]  >  data [ j  +  1 ]:
                 data [ j ],  data [ j  +  1 ]  =  data [ j  +  1 ],  data [ j ]

 

3. 性能比较 

上面看来,冒泡排序只需要5行,够简洁的,但性能咋样呢?来比较一下吧:

import  random
import  datetime
import  copy

def  sort_perfmon ( sortfunc ,  data ):
     sort_data  =  copy . deepcopy ( data )
     t1  =  datetime . datetime . now ()
     sortfunc ( sort_data )
     t2  =  datetime . datetime . now ()
     print  sortfunc . __name__ ,  t2  -  t1
     #print sort_data

data  =  [ random . randint ( 0 ,  65536 )  for  i  in  range ( 2000 )]
#print data
sort_perfmon ( quicksort ,  data )
sort_perfmon ( bubblesort ,  data )

 

4. 结果

通过对随机的2000个数字进行排序,下面的结果可非常容易的看出,快速排序的优势是非常大的。

quicksort  0:00:00.062000
bubblesort  0:00:03.563000

 

5. 代码下载

http://files.cnblogs.com/coderzh/Code/sorttest.rar 

 

 

Python 天天美味系列(总)

Python 天天美味(28) - urlopen    

Python 天天美味(29) - 调用VC++的动态链接库(DLL) 

Python 天天美味(30) - python数据结构与算法之快速排序 

Python 天天美味(31) - python数据结构与算法之插入排序 

Python 天天美味(32) - python数据结构与算法之堆排序 

...

 


本文转自CoderZh博客园博客,原文链接:http://www.cnblogs.com/coderzh/archive/2008/09/20/1294947.html,如需转载请自行联系原作者

目录
相关文章
|
8月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
8月前
|
存储 监控 算法
监控电脑屏幕的帧数据检索 Python 语言算法
针对监控电脑屏幕场景,本文提出基于哈希表的帧数据高效检索方案。利用时间戳作键,实现O(1)级查询与去重,结合链式地址法支持多条件检索,并通过Python实现插入、查询、删除操作。测试表明,相较传统列表,检索速度提升80%以上,存储减少15%,具备高实时性与可扩展性,适用于大规模屏幕监控系统。
241 5
|
8月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
728 0
|
9月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
435 26
|
9月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
405 0
|
9月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
609 0
|
9月前
|
机器学习/深度学习 编解码 算法
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
718 4
|
9月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
1132 4
|
9月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(Python代码实现)
431 3

推荐镜像

更多