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

简介:

1. 选择排序

选择排序原理是先选出最小的数,与第一个数交换,然后从第二个数开始再选择最小的数与第二个数交换,……

def  selection_sort ( data ):
     for  i  in  range ( len ( data )  -  1 ):
         min  =  data [ i ]
         k  =  i
         for  j  in  range ( i ,  len ( data )):
             if  data [ j ]  <  min :
                 min  =  data [ j ]
                 k  =  j
         if  i  <>  k :
             data [ i ],  data [ k ]  =  data [ k ],  data [ i ]


2. 堆排序

堆排序的原理将数组调整成堆,然后将堆顶元素与最后一个元素交换,然后将最后一个节点剔除出堆,再将剩下的数组调整成堆,然后再交换堆顶元素与最后一个元素……

def  heap_adjust ( data ,  s ,  m ):
     if  2  *  s  >  m :
         return
     temp  =  s  -  1
     if  data [ 2 * s  -  1 ]  >  data [ temp ]:
         temp  =  2  *  s  -  1
     if  2  *  s  <=  m  -  1  and  data [ 2 * s ]  >  data [ temp ]:
         temp  =  2  *  s
     if  temp  <>  s  -  1 :
         data [ s  -  1 ],  data [ temp ]  =  data [ temp ],  data [ s  -  1 ]
         heap_adjust ( data ,  temp  +  1 ,  m )
def  heap_sort ( data ):
     m  =  len ( data )  /  2
     for  i  in  range ( m ,  0 ,  - 1 ):
         heap_adjust ( data ,  i ,  len ( data ))
     data [ 0 ],  data [ - 1 ]  =  data [ - 1 ],  data [ 0 ]
     for  n  in  range ( len ( data )  -  1 ,  1 ,  - 1 ):
         heap_adjust ( data ,  1 ,  n )
         data [ 0 ],  data [ n  -  1 ]  =  data [ n  -  1 ],  data [ 0 ]


3. 效率

堆排序的效率还是蛮高的,结果如下:

selection_sort  0:00:02.219000
heap_sort  0:00:00.157000

 

Python 天天美味系列(总)

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

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

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

Python 天天美味(33) - 五分钟理解元类(Metaclasses)[转]

Python 天天美味(34) - Decorators详解  



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

目录
相关文章
|
8月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
9月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
438 26
|
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月前
|
存储 算法 搜索推荐
软考算法破壁战:从二分查找到堆排序,九大排序核心速通指南
专攻软考高频算法,深度解析二分查找、堆排序、快速排序核心技巧,对比九大排序算法,配套动画与真题,7天掌握45%分值模块。
393 1
软考算法破壁战:从二分查找到堆排序,九大排序核心速通指南
|
9月前
|
机器学习/深度学习 编解码 算法
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
718 4
|
9月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
1133 4
|
9月前
|
算法 机器人 定位技术
【机器人路径规划】基于流场寻路算法(Flow Field Pathfinding)的机器人路径规划(Python代码实现)
【机器人路径规划】基于流场寻路算法(Flow Field Pathfinding)的机器人路径规划(Python代码实现)
555 4
|
9月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(Python代码实现)
431 3

推荐镜像

更多