数据结构算法分析
joejames
这个作者很懒,什么都没留下…
展开
-
散列表总结
本文整理自《算法导论》第11章,由于本章有一些概率论知识,因此理解起来比较困难,但是一般只要记住结果即可。我在面试的时候也被问过:“请问哈希冲突的解决方法有哪些?”,这个问题的答案是:第一种是链接技术,即用双向链表来链接哈希值相同的元素。这种方法能够有良好性能的前提是满足近似简单一致散列。第二种是开放寻址法,而开放寻址法有几种生成探查寻列的方法,如线性探查、二次探查、二次哈希(转载 2014-07-25 15:14:58 · 859 阅读 · 0 评论 -
九大排序算法再总结
如果要转载,需要注明出处: http://blog.csdn.net/xiazdong本文是 http://blog.csdn.net/xiazdong/article/details/7304239 的补充,当年看了《大话数据结构》总结的,但是现在看了《算法导论》,发现以前对排序的理解还不深入,所以打算对各个排序的思想再整理一遍。本文首先介绍了基于比较模型的排序算法,转载 2014-07-30 23:40:09 · 516 阅读 · 0 评论 -
堆排序(大根堆)
堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为大顶转载 2014-08-19 07:33:43 · 676 阅读 · 0 评论 -
快速排序的简单实现
#include #include #include int partion(int a[], int p, int r) { srand((unsigned)time(NULL)); int e = rand()%(r-p+1)+p; int tmp = a[e]; a[e] = a[r];原创 2014-08-20 20:51:08 · 373 阅读 · 0 评论 -
二叉查找树的简单C++实现
#pragma oncetemplate class BinarySearchTree{public: BinarySearchTree(); BinarySearchTree(const BinarySearchTree &rhs); ~BinarySearchTree() { makeEmpty(); } const Comparable &findMin() co原创 2014-07-30 23:42:35 · 606 阅读 · 0 评论 -
List的简单C++实现
templateclass List{private:struct Node{Object data;Node *prev;Node *next;Node( const Object & d = Object(),Node *p =NULL, Node *n = NULL):data(d),prev(p),next(n){}};public:原创 2014-07-01 13:44:20 · 537 阅读 · 0 评论 -
归并排序的简单实现
#include #include void merge(int a[],int p ,int q,int r){ int i,j,k,n1,n2; int *front,*back; n1 = q-p+1; n2 = r-q; front = (int *)malloc(n1 * sizeof(int)); back = (int *)malloc(n2 * sizeo原创 2014-08-30 15:51:00 · 493 阅读 · 0 评论 -
Vector的简单C++实现
template class Vector{public:explicit Vector(int initSize=0):theSize( initSize ),theCapacity( initSize + SPARE_CAPACITY){objects = new Object[theCapacity];}Vector(const Vector & rhs)原创 2014-06-29 22:52:00 · 626 阅读 · 0 评论