top N问题可以使用最小堆来实现
一下程序实现了从用户输入的一系列数字中,选出最大的N个数字(不是堆排序)
#!/usr/bin/env python #coding=utf-8 #heapsort.py import sys import stdinInput def heapsort(sortarray,topN): sortarraylen=len(sortarray) heaparray=[] for i in xrange(0,sortarraylen): if len(heaparray)<=topN: heaparray.append(sortarray[i]) heapinsertadjust(heaparray,i) else: if sortarray[i]>heaparray[0]: heaparray[0]=sortarray[i] heapdeleteadjust(heaparray,0) return heaparray #调整初始最小堆 def heapinsertadjust(sortarray,beginnode): rootnode=beginnode; while(rootnode>0): parentNode=(rootnode-1)/2 if sortarray[rootnode]<sortarray[parentNode]: sortarray[rootnode],sortarray[parentNode]=sortarray[parentNode],sortarray[rootnode] rootnode=parentNode #最小堆构造完成后,再来满足条件的数据就需要删除掉节点 def heapdeleteadjust(sortarray,nodeid): currentminid=nodeid sortarraylen=len(sortarray) if (nodeid*2+1)>=sortarraylen: return; if (nodeid*2+2)<sortarraylen: currentminid=currentminid*2+1 if sortarray[currentminid*2+1]<sortarray[currentminid] else currentminid currentminid=nodeid*2+2 if sortarray[nodeid*2+2]<sortarray[currentminid] else currentminid if currentminid!=nodeid: sortarray[currentminid],sortarray[nodeid]=sortarray[nodeid],sortarray[currentminid] heapdeleteadjust(sortarray,currentminid) else: return else: if sortarray[currentminid*2+1]<sortarray[currentminid]: sortarray[currentminid*2+1],sortarray[currentminid] = sortarray[currentminid],sortarray[currentminid*2+1] return if __name__=='__main__': style=5 try: style=int(sys.argv[1]) except: print "input argv error, use 5 as Number of bottom" stdinInput.stdinInput() intsortArrays=heapsort(stdinInput.intsortArrays,style) print intsortArrays
相关推荐
python实现最小二乘法拟合
堆排序9.py 使用python实现堆排序9.py 使用python实现堆排序9.py 使用python实现堆排序9.py 使用python实现堆排序9.py 使用python实现堆排序9.py 使用python实现堆排序9.py 使用python实现堆排序9.py 使用python实现...
堆排序6.py 使用python实现堆排序6.py 使用python实现堆排序6.py 使用python实现堆排序6.py 使用python实现堆排序6.py 使用python实现堆排序6.py 使用python实现堆排序6.py 使用python实现堆排序6.py 使用python实现...
topk问题的Python实现,k-堆实现
Python实现的简单二叉堆(最小堆)示例.rar Python实现的简单二叉堆(最小堆)示例.rar Python实现的简单二叉堆(最小堆)示例.rar Python实现的简单二叉堆(最小堆)示例.rar Python实现的简单二叉堆(最小堆)示例...
最小最大距离法(python实现),用于实现样本聚类,含数据示例
个人实现的最小权重的二叉堆实现,效率很高,适合任意场合下的临时列表排序。 直接执行该文件会执行文件中的测试样例 使用时在头部如此声明 from binaryheap import BinaryHeap bh = BinaryHeap(heap_size) # heap_...
堆中的路径 Python实现的简单二叉堆(最小堆)示例 Python实现的简单二叉堆(最小堆)示例 Python实现的简单二叉堆(最小堆)示例
包含python实现偏最小二乘回归的源代码,同时文件中还有所需数据格式
堆排序13.py 使用python代码实现堆排序13.py 使用python代码实现堆排序13.py 使用python代码实现堆排序13.py 使用python代码实现堆排序13.py 使用python代码实现堆排序13.py 使用python代码实现堆排序13.py 使用...
python实现最小生成树,蓝桥杯训练题通过
斐波那契堆的python实现(优先队列),实现内容:merge(H), insert(v), find_min() # extractMin(), coalesce_step(), updateMin() # decreaseKey(v,k), delete(v)
堆排序.py 使用python的代码实现堆排序.py 使用python的代码实现堆排序.py 使用python的代码实现堆排序.py 使用python的代码实现堆排序.py 使用python的代码实现堆排序.py 使用python的代码实现堆排序.py 使用python...
只有一版,使用分支限界法实现的n个工人作业分配问题。18级学姐自主完成的算法作业,呕心沥血,基于四舍五入等于0基础的python实现,如果在语言规范上存在不足,那就。就憋着!哈哈哈哈哈,代码仅供参考,自己亲自码...
python实现prim 最小生成树算法 源码
主要介绍了Python实现读取文件最后n行的方法,涉及Python针对文件的读取、遍历与运算相关操作技巧,需要的朋友可以参考下
python实现按键精灵工具合集python实现按键精灵工具合集python实现按键精灵工具合集python实现按键精灵工具合集python实现按键精灵工具合集python实现按键精灵工具合集python实现按键精灵工具合集python实现按键精灵...
最小二乘法线性函数模型 - python实现 对应博客文章链接随后发布!
python最小二乘法三维坐标拟合平面-最小二乘法拟合平面
使用python实现最小二乘法,将多项式曲线拟合。当然可以修改一下用在其他需要最小二乘法的地方