算法设计
文章平均质量分 61
our2848884
我是一只螃蟹……
展开
-
\t\tPrim, Dijkstra and Floyd-Warshall(转)
最小生成树的Prim算法所谓“最小生成树问题”,通俗地讲,就是给定一大堆点和它们两两之间的距离(即权),求出“把全部点都纳入组织”所连的边的最小权值总和。显然,如果令|V|个点都勾连到一起的话,需要|V|-1条边。我们所要决定的,就是这|V|-1条边都是谁。Prim算法是一种成熟的、方便的、基于贪心思想的算法,实现起来比较容易。它的思想是维护两个集合:假定集合Q表示已经被“连接进组织”的结点的集合原创 2017-04-17 15:09:12 · 293 阅读 · 0 评论 -
\t\t转载:关于快速排序的优化
快速排序算法是一种基于分治技术的重要的排序算法,自从它被发明以来,就受到了研究人员的广泛注意。多年以来,人们对这个基本算法进行了大量的改良。我搜集并查阅了一些相关的资料,在下文中对这些改进做出一些介绍。 一、基本的快速排序算法 快速排序算法是由C.A.R. Hoare在1961年发明的一种内排序算法,其大致思想如下[5]: 首先,在要排序的序列a中选取一个中轴值,而后将a分区成为两个部分,左边的部原创 2017-04-17 15:09:41 · 237 阅读 · 0 评论 -
\t\t使用插入排序优化快速排序的算法实现
实验目的: 快速排序可以按照以下的算法思想优化,并加快快速排序的速度:即当快速排序所划分的子序列的长度小于某个定值k时,该子序列基本有序,可以采用插入排序的办法对子序列进行排序,从而使整体算法的时间复杂度的期望下降为O(nk+nlg(n/k))。本实验的目的是实现该快速排序的优化算法,并且探讨合理的k的取值范围问题定义实验总共要解决两个问题1、 优化的快速排序的算法确实能够加速快速排原创 2017-04-17 15:09:47 · 407 阅读 · 0 评论 -
\t\t【转】红黑树原理详解(上)
前言: 之所以要写这篇文章,第一个目的是为了各位朋友在查看我写的源代码之前有一个可以理解理论的文章因为红黑树还是有点难的,如果不想搞懂理论,而直接看代码,那绝对是云里雾里,不知所云。第二个目的是我觉得网上虽然后不少我文章也在讲,但是我就是理解不上有点困难,在我参考了很多文章之后,认真阅读才慢慢摸透了其中的原理,所以我想用自己的方式来表达,希望有助于各位的朋友理解。 你可以在这里获得原创 2017-04-17 15:13:46 · 294 阅读 · 0 评论 -
\t\t红黑树原理详解(下)
b :黑兄 遇到黑兄就又麻烦了,我们又必须引入要删除的节点的侄子了。所以我们这里 再次细分为b1: 黑兄 双黑侄 b2: 黑兄 左黑侄右红侄 b3: 黑兄 右黑侄左红侄。 可能你会问b4呢,双红侄的情况呢?其实双红侄的情况同属于b2,b3的情况,所以 可以默认用 b2,b3其中一种情况来处理就可以了。 现在我们开始了 b1黑兄 双黑侄 注解:我们首先可以肯定的是父节点的左子原创 2017-04-17 15:13:50 · 275 阅读 · 0 评论 -
腾讯笔试题——数组位操作
问题:一个文件中有40亿个整数,每个整数为四个字节,内存为1GB,写出一个算法:求出这个文件里的整数里不包含的一个整数。思路: 申请一个大数组,数组中的每一位表示一个int型数字。由于每个整数为四个字节,总共只有2^32约等于4G种可能,故需要512MB个bit,所以数组的大小为512MB,并初始化为0。 首先遍历40亿个整数,并将对应的bit置为1。对于重复的数字只统原创 2017-04-17 15:26:34 · 436 阅读 · 0 评论 -
【原创】TOP k算法的简单实现
顾名思义,TOP k就是从海量的数据中选取最大的k个元素或记录。基本思想就是维护一个具有k个元素的小顶堆。每当有新的元素加入时,判断它是否大于堆顶元素,如果大于,用该元素代替堆顶元素,并重新维护小顶堆,直到所有元素被处理完毕。时间复杂度为O(N*logk),基本达到线性复杂度。部分代码如下: //打印数组元素 void print(int data[], int length) {原创 2017-04-17 15:27:21 · 1047 阅读 · 0 评论 -
【原创】二叉树的中序遍历
今天闲着无事,把以前的东西翻出来看看,重写了一下二叉树的中序遍历的非递归方法。 首先定义了一下二叉树的节点的类。代码如下: class TreeNode { public: TreeNode():nodeValue(' '),leftchild(-1),rightchild(-1){}; TreeNode(char tvalue):nodeValue(tvalu原创 2017-04-17 15:28:04 · 222 阅读 · 0 评论 -
【原创】快速排序
今天参加新浪微博的笔试,遇到了一道算法题,写出快速排序的源代码。好久没写排序的代码了,自己重新写了一份,与大家分享。 在程序中,写了几个辅助函数,一个是用来初始化带排序数组的,一个是用来打印数组的。好了,废话不多说了,见代码: 首先定义一个头文件。 1: //QuickSort.h 2: #include 3: #include 4: using name原创 2017-04-17 15:28:49 · 267 阅读 · 0 评论