06 2014 档案
摘要:排序是算法学习中最基本的问题。1.平均时间复杂度均为O(N2)的排序1.1 插入排序插入排序对少量元素的排序非常有效。工作机制就像打牌一样,为了将牌插入到已排好序的牌中,需要将牌与手中的牌从右向左进行比较。def insertionSort(alist): n=len(alist) fo...
阅读全文
摘要:优先队列(priority queue)是允许至少两种操作的数据结构:Insert及DeleteMin(删除最小者)。相当于队列中的Enqueue、Dequeue操作。优先队列可以用链表、二叉查找树、二叉堆等实现。二叉堆1. 结构性质堆(heap)是一棵完全被填满的二叉树,有可能的例外是在底层,底层...
阅读全文
摘要:散列表的实现常常叫做散列(hashing)。散列仅支持INSERT,SEARCH和DELETE操作,都是在常数平均时间执行的。需要元素间任何排序信息的操作将不会得到有效的支持。散列表是普通数组概念的推广。如果空间允许,可以提供一个数组,为每个可能的关键字保留一个位置,就可以运用直接寻址技术。当实际存...
阅读全文
摘要:设计包含min函数的栈。定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。栈中元素设两个域,一个记录元素的值,一个记录栈的最小值。class Stack(object): def __init__(self): ...
阅读全文
摘要:B树(或称B-树)是一种适用于外查找的树,它是一种平衡的多叉树。阶为M的B树具有下列结构特征:1.树的根或者是一片树叶,或者其儿子数在2和M之间。2.除根节点外的所有非树叶节点儿子数在┌M/2┐和 M之间。3.所有的树叶都在相同的高度。4.节点中包括n个关键字,n+1个指针,一般形式为: (n,P0...
阅读全文