上一页 1 2 3 4 5 6 ··· 15 下一页

2012年10月11日

值 引用 指针概念区别汇总

摘要: 传值和传引用的概念传值(pass by value):即形参接收实参传递过来的值,如果是自定义类型,要调用拷贝构造函数。函数处理的是形参的值。传引用(pass by reference):引用表示与原对象完全相同,是同一个对象。若函数的形参是引用,则实参与形参间不存在参数传递,且函数内对形参的修改就是修改实参,因为它们是引用关系,是同一个对象。语言应用C语言中,传递的参数类型只有1个:传值,包括传递普通数值和指针。C++中,传递的参数类型有2个:传值、传引用java中,传递的类型只有1个:传值。java中传的值包括:基本数据类型和对象,其中对象当做指针看待三种语言的处理方法相同: 不管传递的是 阅读全文

posted @ 2012-10-11 13:52 as_ 阅读(656) 评论(0) 推荐(0) 编辑

2012年10月9日

静态编译和动态编译(函数)实现

摘要: 资料来源于网络在C++中,联编是指一个计算机程序的不同部分彼此关联的过程。按照联编所进行的阶段不同,可分为两种不同的联编方法:静态联编和动态联编。1.静态联编静态联编是指联编工作在编译阶段完成的,这种联编过程是在程序运行之前完成的,又称为早期联编。要实现静态联编,在编译阶段就必须确定程序中的操作调用(如函数调用)与执行该操作代码间的关系,确定这种关系称为束定,在编译时的束定称为静态束定。静态联编对函数的选择是基于指向对象的指针或者引用的类型。其优点是效率高,但灵活性差.2.动态联编动态联编是指联编在程序运行时动态地进行,根据当时的情况来确定调用哪个同名函数,实际上是在运行时虚函数的实现。这种联 阅读全文

posted @ 2012-10-09 10:12 as_ 阅读(2543) 评论(0) 推荐(0) 编辑

const与define的对比

摘要: define常见用法:1.定义简单的常数:定义常量,便于修改(切不可在后面加上分号!)#define N 1000等效于const int N = 1000;但略有不同,define只是简单替换,而不是作为一个变量来使用.2. 定义简单的函数:注意多使用括号 define可以像函数那样接受一些参数,如下:#define max(x,y) (x)>(y)?(x):(y);3.条件编译(防止重复包括 重复定义)4.定义单行宏,多行宏与const比较部分const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而#define 只作简单的字符串替换,无类型安全检查。co 阅读全文

posted @ 2012-10-09 09:56 as_ 阅读(1523) 评论(0) 推荐(1) 编辑

2012年10月5日

找出无序数组中第k小的数

摘要: 题目描述:给定一个无序整数数组,返回这个数组中第k小的数。解析:最平常的思路是将数组排序,最快的排序是快排,然后返回已排序数组的第k个数,算法时间复杂度为O(nlogn),空间复杂度为O(1)。使用快排的思想,但是每次只对patition之后的数组的一半递归,这样可以将时间复杂度将为O(n)。代码实现:#include <iostream>#include <string>#include <cstring>#include <vector>#include <algorithm>using namespace std;void sw 阅读全文

posted @ 2012-10-05 01:37 as_ 阅读(4447) 评论(3) 推荐(2) 编辑

2012年10月4日

O(n)回文子串(Manacher)算法

摘要: 资料来源网络 参见:http://www.felix021.com/blog/read.php?2040问题描述:输入一个字符串,求出其中最大的回文子串。子串的含义是:在原串中连续出现的字符串片段。回文的含义是:正着看和倒着看相同,如abba和yyxyy。解析:这里介绍O(n)回文子串(Manach... 阅读全文

posted @ 2012-10-04 16:23 as_ 阅读(31173) 评论(6) 推荐(2) 编辑

2012年9月28日

编辑距离及编辑距离算法

摘要: 编辑距离概念描述:编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。例如将kitten一字转成sitting:sitten (k→s)sittin (e→i)sitting (→g)俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念。问题:找出字符串的编辑距离,即把一个字符串s1最少经过多少步操作变成编程字符串s2,操作有三种,添加一个字符,删除一个字符,修改一个字符解析:首先定义这样一个函数——edit(i, j),它表示第一个字符串的长度为i 阅读全文

posted @ 2012-09-28 16:05 as_ 阅读(66139) 评论(7) 推荐(10) 编辑

2012年9月26日

腾讯校招题:fork进程与缓存

摘要: 题目描述:请问下面的两个程序各一共输出多少个“-”?#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(void){ int i; for(i=0; i<2; i++) { fork(); printf("-"); } return 0;}#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(void){ int i; for(i=0 阅读全文

posted @ 2012-09-26 14:15 as_ 阅读(2817) 评论(0) 推荐(4) 编辑

Belady现象

摘要: Belady现象:采用FIFO算法时,如果对—个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多但缺页率反而提高的异常现象。Belady现象可形式化地描述为:一个进程户要访问M个页,OS分配舻个内存页面给进程P;对一个访问序列S,发生缺页次数为PE(占,N)。当N增大时,PE(S,N)时而增大时而减小。Belady现象的原因是FIFO算法的置换特征与进程访问内存的动态特征是矛盾的,即被置换的页面并不是进程不会访问的。 先进先出算法(FIFO)。选择装入最早的页面置换。可以通过链表来表示各页的装入时间先后。FIFO的性能较差,因为较早调入的页往往是经常被访问的页,这些页在FIFO算法下 阅读全文

posted @ 2012-09-26 10:35 as_ 阅读(4245) 评论(0) 推荐(0) 编辑

2012年9月23日

最小排列数

摘要: 题目描述:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132。请给出解决问题的算法,并证明该算法。解析:对数组进行排序,排序规则:当两个数进行比较时,现将他们转坏为char数组,然后用两个char指针挨个字符进行比较,当其中一个为正常字符,而另一个为‘\0’,则后者指针回溯第一个字符,直到找到第一个不相同的字符,字符大者的对应数为大,或者当两者指针对应字符皆为‘\0’时,此时证明两个数字”相等“。具体实现,见下面参考代码:参考代码:#include <iostream>#includ 阅读全文

posted @ 2012-09-23 15:54 as_ 阅读(1615) 评论(0) 推荐(0) 编辑

2012年9月20日

字符全排列

摘要: 题目描述:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。解析:递归法:首先看最后两个字符b, c。 它们的全排列为b c和c b, 即以b开头的c的全排列和以c开头的b的全排列。再看三个字符a,b,c。他们的全排列(a,b,c)、(a,c,b)、(b,a,c)、(b,c,a)、(c,a,b)、(c,b,a)从而可以推断,设一组数p = {r1, r2, r3, ... ,rn}, 全排列为perm(p),pn = p - {rn}。因此perm(p) = r1perm(p1), 阅读全文

posted @ 2012-09-20 15:43 as_ 阅读(1134) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 ··· 15 下一页

导航