09 2013 档案

摘要:基本的计算步骤 时间复杂度的定义 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n))为算法的渐进时间复杂度(O是数量级的符号 ),简称时间复杂度。根据定义,可以归纳出基本的计算步骤 1. 计算出基本操作的执行次数T(n) 基本操作即算法中的每条语句(以;号作为分割),语句的执行次数也叫做语句的频度。在做算法分析时,一般默认为考虑最坏的情况。2. 计算出T(n)的数量级 求T(n)的数... 阅读全文
posted @ 2013-09-30 23:39 呱呱老师 阅读(360) 评论(0) 推荐(0) 编辑
摘要:该算法是每次分两半(最坏情况)。假设总长度N,N * (1/2)^x = 1;所以2^x = N,所以x=logn (底为2)。 阅读全文
posted @ 2013-09-30 23:11 呱呱老师 阅读(232) 评论(0) 推荐(0) 编辑
摘要:给出数据:1、全国所有车站站点; 2、所有车次以及车次经过的站点和车站之间的距离;求给定两个站点A,B之间的走法有几种,要求途经的站点数不超过n,1、设计一个数据结构存储数据;2、设计一个算法求该问题; 阅读全文
posted @ 2013-09-22 20:52 呱呱老师 阅读(192) 评论(0) 推荐(1) 编辑
摘要:之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。好了,进入正题………首先,为了在我们的程序中使用string类型,我们必须包含头文件 。如下:#include //注意这里不是string.h string.h是C字符串头文件1.声明一个C++字符串声明一个字符串变量很简单:string Str;这样我们就声. 阅读全文
posted @ 2013-09-19 17:32 呱呱老师 阅读(232) 评论(0) 推荐(0) 编辑
摘要:1、简单选择排序:设所排序序列的记录个数为n。i取1,2,…,n-1,从所有n-i+1个记录(Ri,Ri+1,…,Rn)中找出排序码最小的记录,与第i个记录交换。执行n-1趟 后就完成了记录序列的排序。2、冒泡排序:从前向后依次比较,如果前面一个比后面一个小就交换,依次下去就选出一个最小的。如此下去,第二次选出第二小的,这样下去一直到排好为止。冒泡排序算法: 1)初始 R[1..n]为无序区。 (2)第一趟扫描 从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下、重者在上,则交换二者的位置。即依次比较(R[n],R[n-1]),(R[n-1],R[n-2... 阅读全文
posted @ 2013-09-17 11:18 呱呱老师 阅读(211) 评论(0) 推荐(0) 编辑
摘要:B树即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入右儿子;如果左儿子或右儿子的指针为空,则报告找不到相应的关键字;如果B树的所有非叶子结点的左右子树的结点数目均保持差不多(平衡),那么B树的搜索性能逼近二分查找;但它比连续内存空间的二分查找的优点是,改变B树结构(插入与删除结点)不需要移动大段的内存数据, 阅读全文
posted @ 2013-09-17 00:16 呱呱老师 阅读(270) 评论(0) 推荐(1) 编辑
摘要:// fa.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "iostream"#include"test.txt"using namespace std;int main(){ void (*fun)(A*);//定义了一个函数指针,名字叫做fun,该函数有一个参数,是A*类型的。 A *p=new B;//向内存自由区申请一个内存单元地址,然后隐式保存在一个指针中,然后把这个地址赋给A类型的指针p。 long lVptrAddr;//待会儿用来保存vptr的值。 memcpy(& 阅读全文
posted @ 2013-09-16 14:32 呱呱老师 阅读(597) 评论(0) 推荐(0) 编辑
摘要:// fa.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "iostream"using namespace std;class A{ //虚函数示例代码,实例对象里只有vptr指针public: virtual void fun(){cout(lVptrAddr),4);//取出vtbl第一个slot里的内容,并存放在函数指针fun里。 //需要注意的是lVptrAddr里面是vtbl的地址,但lVptrAddr不是指针,所以我们要把它先转变成指针类型 fun(p);//这里就调用了刚才取出的函数地 阅读全文
posted @ 2013-09-16 13:52 呱呱老师 阅读(330) 评论(0) 推荐(0) 编辑
摘要:1.报数游戏问题描述:设有N个人围坐一圈并按顺时针方向从1到N编号,从第S个人开始进行1到M报数,报数到第M个人时,此人出圈,再从他的下一个人重新开始1到M的报数,如此进行下去直到所有的人都出圈为止。现要打印出出圈次序。要求实现函数:void circle_sort (int n, int s, int m, int *p)输入:n游戏总人数s报数的起始编号m报数的数值输出:p指向长度为n的数组,出圈次序保存在p指向的数组中示例n=7 s=2 m=3出圈次序为:4 7 3 1 6 2 5n=3 s=1 m=2出圈次序为:2 1 3// tst.cpp : 定义控制台应用程序的入口点。//#in 阅读全文
posted @ 2013-09-12 22:34 呱呱老师 阅读(2055) 评论(0) 推荐(0) 编辑
摘要:第一题:地面上有无数的随机硬币,现在有一个人负责每天对这些硬币进行操作,操作如下:如果硬币是反面的,就把它翻过来;如果是正面的就随机抛一下;如此以往,到n天以后正面和反面的比例是否能够达到一个稳定的比例,如果能,求比例是多少。第二题:公司有两个工厂甲乙,甲厂生产全部的40%产品,乙厂生存了60%的产品,甲厂生产的不合格率为1%,乙厂生产的不合格率为2%,问如果随机抽一个产品是不合格产品,问这个产品是甲厂生产的概率是多少?第三题:50个灯,有50个按钮,编号为1,2,3……50.刚开始灯全部是熄的,现在依次按按钮,每次按到按钮i,i的倍数编号的灯就变一下状态,问到最后开了几盏灯。第四题:有一个. 阅读全文
posted @ 2013-09-11 21:09 呱呱老师 阅读(1914) 评论(6) 推荐(0) 编辑
摘要:http://www.v2ex.com/ 阅读全文
posted @ 2013-09-03 18:58 呱呱老师 阅读(663) 评论(0) 推荐(0) 编辑
摘要:这个算法的做法就是在部分匹配的时候,常规想法是向后移动一位,但是KMP想法是向后移动n位(n=m-L)。注释:这里m表示已经匹配了的字符的个数,L表示已经匹配了的那些字符组成的这个字符串的前缀和后缀的最长公共串的长度,比如说abbabab,这个串的L就为0,而abba的L就为2。本质就是这些已经匹配好的字符串如果前缀和后缀有相同的字符串,那么就把前缀相同的那个移到后缀相同的字符串的位置,完了。参考http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.htmlhttp://www.c 阅读全文
posted @ 2013-09-02 18:37 呱呱老师 阅读(685) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示