堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
                            
                            
                                分类:
其他好文   时间:
2014-07-16 19:26:44   
                                阅读次数:
192
                             
                         
                    
                        
                            
                            
                                直接插入排序:将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1...
                            
                            
                                分类:
其他好文   时间:
2014-07-16 17:32:03   
                                阅读次数:
223
                             
                         
                    
                        
                            
                            
                                写在前面:
        
        排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。因此排序掌握各种排序算法非常重要。对下面介绍的各个排序,我们假定所有排序的关键字都是整数、对传入函数的参数默认是已经检查好了的。只是简单的描述各个算法并给出了具体实现代码,并未做其他深究探讨。
基础知识:
...
                            
                            
                                分类:
其他好文   时间:
2014-07-16 09:47:22   
                                阅读次数:
296
                             
                         
                    
                        
                            
                            
                                前些日子有朋友遇到这个问题来问我,我觉得有点意思,便实现了代码,写篇文章做个总结,与网友分享。
 
需求:
实现两个API,在客户端:传入一个二叉树的根结点指针,输出可以在网络中传输的ASCII串。在服务器端:根据传入的ASCII串来解析生成一个二叉树,返回二叉树的根结点指针。
 
思路:
看到这个问题,首先想到的是二叉树补全法,将这课二叉树补全,变成一颗完全二叉树,再使用数组进行存储...
                            
                            
                                分类:
编程语言   时间:
2014-07-15 12:34:36   
                                阅读次数:
268
                             
                         
                    
                        
                            
                            
                                任意一个比较排序算法在最坏情况下,都需要做 Ω(n lg n) 次的比较,堆排序和合并排序都是渐进最优的比较排序算法。本文介绍三种以线性时间运行的算法:计数排序、基数排序和桶排序,这些算法都用非比较的一些操作来确定排序顺序。因此,下界 Ω(n lg n) 对它们是不适用的。
                            
                            
                                分类:
其他好文   时间:
2014-07-14 15:57:36   
                                阅读次数:
263
                             
                         
                    
                        
                            
                            
                                记录学习点滴,菜鸟成长记堆排序引入了另一种算法设计技巧:使用一种我们称之为“堆”的数据结构来进行数据管理。堆排序算是真正意义上的利用数据结构来求解数组排序的方法。“插入排序”和“归并排序”可以看做是一种“计算机体力活”,体现的思想更多的是去模拟最简单的人类思维,比如插入排序过程中的比较,归并中子问题...
                            
                            
                                分类:
其他好文   时间:
2014-07-14 09:42:06   
                                阅读次数:
235
                             
                         
                    
                        
                            
                            
                                上一篇 说了些堆的建立及其相关操作,这里看下用堆来解决数据量较大的时候,查找最小的k个数的情况。这里会用到上一篇中的函数。
我们先生存1千万个随机数,写到文件中:
import random
def randData():
	with open('randint.txt', 'w') as fd:
		for i in range(1, 10000000):
			fd.write('%...
                            
                            
                                分类:
其他好文   时间:
2014-07-13 18:51:05   
                                阅读次数:
261
                             
                         
                    
                        
                            
                            
                                这里记录下堆的相关操作。
op 1:
'''
	@ data: the heap array
	@ p   : index of parent item 
	@ n   : number of data
	@@ Swap p and it's son items, make p the largest of them
'''
def swapForMaxHeap(data, n, p):
	l...
                            
                            
                                分类:
其他好文   时间:
2014-07-13 17:07:15   
                                阅读次数:
223
                             
                         
                    
                        
                            
                            
                                部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。我们一般提到排序都是指内排序,比如快速排序,堆排序,归并排序等,所谓内排序就是可以在内存中完成的排序。RAM的访问速度大约是磁盘的25万倍,我...
                            
                            
                                分类:
其他好文   时间:
2014-07-12 08:43:31   
                                阅读次数:
313