数据结构与算法
bodogbo11
这个作者很懒,什么都没留下…
展开
-
面试题之10亿正整数问题
作者: cnyao 来源: 博客园 发布时间: 2009-11-26 21:36 阅读: 1145 次 原文链接 全屏阅读 [收藏] 10亿个正整数,只有其中1个数重复出现过,要在O(n)的时间里面找出这个数,内存要尽可能少(小于100M)。谢谢absolute同学提出的问题。部分解答(还有没有完成的部分): 首先看一下10亿个正整数,正整数可以转载 2012-10-08 11:05:22 · 1129 阅读 · 0 评论 -
合并排序算法
有很多算法在结构上是递归的:为了解决一个给定的问题,算法要一次或多次地递归调用起自身来解决相关的子问题 。这些算法通常采用分治策略:将原有问题划分成n个规模较小而结构与原问题相似的子问题;递归地解决这些子问题,然后再合并其结果,就得到原问题的解。分治模式在每一层递归上都有三个步骤:分治(Divide):将原问题分解成一系列子问题;解决(Conquer):递归地解各子问题。若转载 2012-10-10 17:24:10 · 1067 阅读 · 0 评论 -
各种排序算法优点缺点
一、冒泡排序 已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先比较a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变。再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则不变。再比较a[3]与a[4],以此类推,最后比较a[n-1]与a[n]的值。这样处理一轮后,a[n]的值一定是这组数据中最大的。再对a[1]~a[n-1]转载 2012-10-10 17:24:50 · 820 阅读 · 0 评论 -
位图排序算法
位图排序是一种效率极高(复杂度可达O(n))并且很节省空间的一种排序方法,但是这种排序方法对输入的数据是有比较严格的要求(数据不能重复,大致知道数据的范围)。位图排序即利用位图或者位向量来表示集合。举个例子,假如有一个集合{3,5,7,8,2,1},我们可以用一个8位的二进制向量set[1-8]来表示该集合,如果数据存在,则将set相对应的二进制位置1,否则置0.根据给出的集合得到的set为{1,转载 2012-10-10 17:45:05 · 619 阅读 · 0 评论 -
图的邻接矩阵
邻接矩阵(Adjacency Matrix)的表示法,就是用一维数组存储图中顶点的信息,用矩阵表示图中各顶点之间的邻接关系。假设图G=(V,E)有n个确定的顶点,即V={v0,v1,…,vn-1},则表示G中各顶点相邻关系为一个n×n的矩阵,矩阵的元素为: A[i][j]=若G是网图,则邻接矩阵可定义为: A[i][j]=转载 2012-11-14 10:34:07 · 2657 阅读 · 0 评论