摘要: 1. 直接寻址2. 散列表3. 散列函数设计1. 直接寻址使用散列的目的是能够快速取得某个元素,那么如果能够保证每个元素都存在一个“槽”的话(类似于数组),就能够完成在O(1)的时间内完成取元素的工作。如果一个集合的元素都是取自全域U={1, 2, ... m},那么通过使用数组T[1,...m]来保证每个元素都存在与之对应的”槽“。2. 散列表散列方式下,关键字k是放在h(k)中,显然散列表方法中最主要的是如何设计散列函数,尽可能的减少散列之间的冲突。但是散列中的冲突是无法避免的,那么常见的两种解决方法是:链接法和开放寻址法。2.1 链接法链接法的核心思想就是冲突的元素(具有相同的h(k)) 阅读全文
posted @ 2011-03-22 10:17 qiang.xu 阅读(413) 评论(0) 推荐(0)
摘要: 1. 数组最大值和最小值问题2.给定数组A,查找数组中第i小的数据3. 代码下载1. 最大值和最小值问题1.1 给定一个数组A,如何求得数组A中的最大元素和最小元素?最直接的算法显然就是通过遍历数组实现,那么现在的问题是这个算法是否是最优的呢?类比比赛淘汰机制的话,可以看出上面的算法在比较次数上是最优的。简单的实现:int maxElementInArray(int* arr, int length){ int max = arr[0]; for(int i = 1; i < length; ++i) { if (arr[i] > max) max = arr[i]; } retu 阅读全文
posted @ 2011-03-22 10:00 qiang.xu 阅读(408) 评论(0) 推荐(0)
摘要: 1. 二叉树简介2. 二叉树实现代码及boost类库中对于图的支持简单介绍3. 代码反思4. 代码下载1. 二叉树简介二叉树顾名思义,除了叶子节点之外,每个节点均含有两个子节点。例如:二叉查找树是满足下面的下面条件的 二叉树:下面定义在二叉查找树上的操作: 1. 二叉查找树上最大元素:maxElement 2. 最小元素:minElement 3. 前序遍历:preOrder 4. 中序遍历:inOrder 5. 后序遍历:postOrder 6.中序遍历的前驱:precursor 7. 中序遍历后继:successor 8. 插入节点:insertNode 9. 删除节点:deleteNod 阅读全文
posted @ 2011-03-22 08:44 qiang.xu 阅读(1327) 评论(0) 推荐(0)