
数据结构与算法
文章平均质量分 64
aixiaolin
这个作者很懒,什么都没留下…
展开
-
读取内存数据问题
<br />哎,看来一天写一篇算法有点不是很可能哦,利用中午时间把一道网上的百度笔试题写下嘿嘿<br />题目如下:<br /> <br />在处理磁盘数据时,需要首先将其读入内存才能进行处理。如果要读取的数据已经在内存中,则可以直接 访问内存。通常来说内存是有限的,因此要读取新的数据时必须覆盖内存中一部分原有的数据。假设现在有n块同样大小的数据,内存一共可以容纳m块数据。现在给出 一系列对这些数据的读取请求,要求它们必须按照给定的顺序被读取,同时要求读取磁盘 的次数尽可能地少。请简述一个策略满足这样的要求原创 2011-05-12 13:17:00 · 3574 阅读 · 1 评论 -
计数排序
计数排序, 基数排序, 桶排序等非比较排序算法,平均时间复杂度都是O(n). 这些排序因为其待排序元素本身就含有了定位特征,因而不需要比较就可以确定其前后位置,从而可以突破比较排序算法时间复杂度O(nlgn)的理论下限.计数排序是最简单的特例,它要求待排序元素是位于0到k之间转载 2011-10-15 14:46:58 · 500 阅读 · 0 评论 -
对硬盘上的文件可否实现并行存取
单块硬盘上同时并行存取两个文件是不可以的,但是可以通过组RAID/带区卷或跨区卷等方式来实现在多块硬盘上的并行存取。RAID0、RAID5等的原理是将一个文件分布在多块硬盘上,读写时,多块硬盘并行存取,可以大大提高对这个文件的读写速率,当然,仍然不是同时读写多个文件,而是加快每个文件的读写速度。(RAID5或更高级别的RAID某些情况下可同时存取两个以上文件)跨区卷是直接把多块转载 2011-10-26 19:14:42 · 1377 阅读 · 0 评论 -
《编程珠玑(第二版)》读书笔记——第一章
慢慢的学习算法中。。。有时候明明知道要这样去做,去学习,这样学习之后,会事半功倍,效率高,而当由于自己的懒惰或者其它情绪因素而做不到时,心里又懊悔又不知所措。。。人,或许就是有很多缺点,对自己要求很高,期待很高,有时候做不到,失望也就随之而来了。。。慢慢的进步吧,不急不躁。 这本书,有的读的比较认真有的读的比较粗略,写个读书笔记,再把这本书带给自己的收获记录下来吧。。。 第一章:开篇原创 2011-11-05 12:58:50 · 1117 阅读 · 0 评论 -
《编程珠玑(第2版)》第2章——读书笔记
第二章呢,是以三个问题展开的。第一个问题:给定的最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数(至少有一个整数,因为32位的整数,一共会有2的32次方个整数,即4 294 967 296)。在足够的内存空间情况下,如何解决问题?如果有几个外部的临时文件可用,但仅有几百字节的内存,又该如何解决? 对于有足够内存的情况下,可以用刚刚的位图数据结构的办法,可以原创 2011-11-05 14:11:26 · 1800 阅读 · 0 评论 -
atoi()函数的实现
atoi()函数是在笔试面试中经常考到的一个题目,主要考察是,int的溢出,字符过滤等问题下面是具体实现:#define INT_MAX = 32767#define INT_MIN=-32768int atoi(const char * str){ if(!str) return 0; int result = 0; int sign = 1; //提取+转载 2012-03-16 20:23:07 · 891 阅读 · 0 评论 -
整数溢出问题——讲的不错
C语言为编程者提供了三种不同长度的整数:short int、int和long int,但不管是哪种类型表示的整数总有一定的范围,越出该范围时称为整数的溢出。例如现有算法要求如下:求满足条件1+2+3+…+n≤32767的最大整数n,请考察如下程序段:int n=1,sum=0;while(sumprintf(“n=%d\n”,n-1);乍看该程序时无错误,但事实上,上列程序中的wh转载 2012-03-16 19:44:42 · 2221 阅读 · 0 评论 -
字节对齐
一、什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据转载 2012-03-18 20:24:04 · 559 阅读 · 0 评论 -
c语言工程里其它文件引用全局变量?
c语言工程里其它文件引用全局变量?工程包含a.c b.c在a.c文件里有一个全局变量 listb.c里有一个全局变量 test问:1、若b.c里的函数要改变a.c 里全局变量的值,可否直接在b.c 里extern list 然后直接调函数修改?2、a.c 调用b.c里的函数test_change(test)修改test的值转载 2012-03-18 20:29:33 · 7333 阅读 · 0 评论 -
时间复杂度为O(n)的排序算法,你会吗?——其实很简单的
看上去似乎任何已知的算法都无法做到,如果谁做到了,那么所有的排序方法:QuickSort,ShellSort,HeapSort,BubbleSort等等等等,都可以扔掉了,还要这些算法干吗阿,呵呵。我们平常知道是排序算法都是O(n),最好的情况也就是O(nlogn),怎么会有转载 2011-10-15 14:19:18 · 8626 阅读 · 1 评论 -
桶排序——以线性时间运行的排序方法
定义 假定:输入是由一个随机过程产生的[0, 1)区间上均匀分布的实数基本思想将区间[0, 1)划分为n个大小相等的子区间(桶),每桶大小1/n:[0, 1/n), [1/n, 2/n), [2/n, 3/n),…,[k/n, (k+1)/n ),…将n个输入元素分配到这些转载 2011-10-15 14:35:18 · 1105 阅读 · 0 评论 -
KMP算法及Next数组求解方法
<br />KMP算法是大二第一学期数据结构课上学的,当时有点颓废,听课都是得过且差不多懂了就行,没有更深的去理解一些东西,所以导致我学数据结构这个基础课程学的不咋地,慢慢补喽嘿嘿。加油嘿嘿<br /> <br />什么叫做模式匹配呢? <br />模式匹配是:<br />给定两个串S="s1s2....sn"和T=“t1t2...tm",在主串S中寻找子串T的过程称为模式匹配(pattern matching),其中T称为模式。如果匹配成功,返回T在S中的位置,如果匹配失败,返回0.<br /> <br原创 2011-05-15 12:55:00 · 5523 阅读 · 0 评论 -
定义一个宏,比较a和b的大小,不用大于,小于,if语句
<br />I ate my words,嘿嘿,由于最近接了英语老师的翻译的任务,有点乱,所以把空闲时间有时候给了翻译,没有每天看算法。坚持吧,俞敏洪都说了,如果每天背十个单词,一年就是3560个单词呢,你也是大师级人物了,嘿嘿,所以坚持吧。。。<br /> <br />今天在网上搜了一个百度题,定义一个宏,比较a和b的大小,不准用大于、小于、if语句<br /> <br />对于这个问题,貌似可以想到好多我接触过但是拿不准的定义,比如宏,当初学C时只对定义一个数的宏有印象(盲点吧),还有这个题用到的二进制原创 2011-05-22 15:21:00 · 7958 阅读 · 1 评论 -
关于08年腾讯笔试的最后一道题,找中位数
网上找的一道算法题,比较悲剧了,看了半天也没咋看懂,可能是:查找的算法没搞清 ; 计算机组成原理木有搞的很清楚。(快考试了,赶紧好好弄明白吧,否则拖下去。。。搞懂的日子就遥远了啊。。。)题目的意思就是从海量数据中找出中位数。在此记录下,有时间继续弄明白了。。。题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可(内存限制为转载 2011-06-09 20:11:00 · 934 阅读 · 0 评论 -
百度面试题--循环有序数组
<br />昨天学长去百度面试了,经过简历笔试等重重考验终于可以面试了,为他高兴,加油嘿嘿。同时我也听到了一个百度的面试题,现在整理下吧,从现在开始,我每天要做一道ACM算法题,以此来提高自己的算法思维能力,今天就从百度的一道面试题开始吧!哈哈。。。<br />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />题目描述如下哦:<br />一个循环有序数组,例如:7,8,9,0,1,2,3,4,5,6 不知道其最小值的位置,要查找任原创 2011-05-10 11:20:00 · 3485 阅读 · 1 评论 -
系统栈与用户栈 以及 栈的内部实现
系统栈(也叫核心栈、内核栈)是内存中属于操作系统空间的一块区域,其主要用途为: (1)保存中断现场,对于嵌套中断,被中断程序的现场信息依次压入系统栈,中断返回时逆序弹出; (2)保存操作系统子程序间相互调用的参数、返回值转载 2011-09-27 19:25:15 · 1286 阅读 · 0 评论 -
c中的内存布局问题 --讲解的挺不错的
1.内存问题每次都会遇到这个问题,一直是看了又忘,忘了又看。本文主要简介一下c中的内存类型和布局问题。2。内存的类型(1)栈区(stack):由编译器自动分配和释放的,存放函数的参数值、局部变量的值等。操作方式类似数据结构中的栈。在函数参数和地址入栈情况中,一般是转载 2011-10-11 19:00:13 · 870 阅读 · 0 评论 -
内存区域,堆栈区别
C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。C++内存区域分为5个区域。分别是堆,栈,自由存储区,全局/静态存储区和常量存储区。栈转载 2011-10-11 20:34:40 · 3350 阅读 · 0 评论 -
基数排序
基数排序是非比较排序算法,算法的时间复杂度是O(n). 相比于快速排序的O(nlgn),从表面上看具有不小的优势.但事实上可能有些出入,因为基数排序的n可能具有比较大的系数K.因此在具体的应用中,应首先对这个排序函数的效率进行评估.基数排序的主要思路是,将所有待比较数值(注意转载 2011-10-15 14:51:35 · 473 阅读 · 0 评论 -
C++基础
1.1面向过程1.1.1 为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块。 #pragma once这个也可以1.1.2 用#i nclude1.1.3 与零值比较 不可将布尔变量直接与TRUE,FALSE,0,1直接比较 if( flag )或者if( !flag ); 整形变量用 = = !=与0直接转载 2012-03-18 20:30:39 · 701 阅读 · 0 评论