09 2013 档案

摘要:最短路算法用于求带权有向图中,两点之间的最近距离。它通过不断扩大已知的最短路径,直到最短路径覆盖终点为止。由下面的程序可以看书,它的时间复杂度为O(n^3)。下面举一简单例子说明最短路算法的步骤。想求v0到v7的最短路径,初始的时候,只知道v0距离自己的最短距离为0.使用一个close数组存储以求得与v0的最短距离,如未求得的复制为-1. 开始时,close[0]=0;(1)遍历close里面的点,找出所有与close点相邻但不在close里面的点。刚开始只有v0在close里面,与它相邻的点有v1、v2、v3。(2)找出这些点中,距离v0最近的一个点。例如点i是close里面的点,j是i的邻 阅读全文
posted @ 2013-09-13 20:46 iyjhabc 阅读(370) 评论(0) 推荐(0)
摘要:const其他用法已经比较清楚了,但const函数的概念之前还有点模糊,先记录一下。const int* fun();用于修饰函数返回值,一般用于修饰函数返回指针,防止返回的指针内容被修改。class B{public: int a; void fun() const;};表示fun()是一个const成员函数,它不能修改任何数据成员,也不能调用任何非const成员函数。当在fun内尝试修改a时编译会报错。于是当出现const返回值加const成员函数的时候,要搞清楚了const int* fun() const ;表示它是一个const成员函数,并且返回一个const指针。 阅读全文
posted @ 2013-09-12 16:22 iyjhabc 阅读(140) 评论(0) 推荐(0)
摘要:看了一道笔试题,说有100W个数据,范围在0~65535之间,要求用最少的空间和最快的速度进行排序。刚开始的思路是,65535就是2^16,那首先要把数据类型定义为short。其次,要用最少的空间,那最好还是不用递归,那不用快排。不递归,速度又快,那肯定是堆排序了。O(n)的空间+O(nlogn)的时间。后来看了网上的人对于这题的评点,原来统计排序才是这一条件下的最优解。统计排序,又叫桶排序。它的原理非常简单。在知道数据大小范围的条件下,定义一个等于数据大小范围的数组。数组初始化为0,然后直接用数据作为数组下标统计数据个数,最后把统计数据从头到尾输出(升序),或者从尾到头输出(降序)即可。时间 阅读全文
posted @ 2013-09-12 10:15 iyjhabc 阅读(666) 评论(0) 推荐(0)
摘要:如果程序中经常要对矩阵进行与或非等运算,可以把整型数组的矩阵转化成char型的bitmap,通过直接的位运算进行这些与或非操作会大大地提高效率。class bitmap{ char *buf;public: int buf_len;//buf的长度 int bit_len;//bitmap的位数 bitmap(int *group,int group_len){ bit_len=group_len; buf_len=group_len/8+1; buf=new char[buf_len]; memset(buf,0... 阅读全文
posted @ 2013-09-11 11:08 iyjhabc 阅读(810) 评论(0) 推荐(0)
摘要:定义一个类对象时,首先根据初始化列表初始化类的成员(就算没有显式定义初始化列表,编译器也会默认地初始化一次),然后运行构造函数。因此,类成员的构造函数必定先于类的构造函数运行。class A{public: A() { puts("In A"); } ~A() { puts("Out A"); }};class B{public: B() { puts("In B"); } ~B() { puts("Out B"); }};class D{public: D() ... 阅读全文
posted @ 2013-09-08 22:17 iyjhabc 阅读(1522) 评论(1) 推荐(0)
摘要:数据库设计三范式1NF:关系型数据库自然满足1NF2NF:表的记录唯一性,通过主键解决3NF:表中不能有冗余信息通过外键来解决三范式只是一个设计参考,不一定要完全遵照。适度的冗余可以减少查询时候连接表的操作,提高查询效率。这里有一系列的数据库优化经验,可作参考。http://isky000.com/database/mysql-performance-tuning-sql 阅读全文
posted @ 2013-09-07 20:16 iyjhabc 阅读(122) 评论(0) 推荐(0)
摘要:友元就是让本该不能访问类的私有成员、保护成员的函数或者类,通过声明它为友元的方式,使得他们能够访问这些私有、保护成员。使用友元其实就是破坏封装,应尽量避免使用。友元有多重形式,经常会造成混乱,其实总结来说,就是三种程度的破坏封装:1、声明一个普通函数作为类的友元(最高程度破坏封装)class INTEGER{private: int num;public: friend void Print(const INTEGER& obj);//声明友元函数 INTEGER(){ num=999; }};void Print(const INTEGER& obj)/... 阅读全文
posted @ 2013-09-06 10:34 iyjhabc 阅读(383) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/zzwlovegfj/archive/2012/06/23/2559596.html1.什么是视图?视图是由查询结果形成的一张虚拟表。2.什么时候要用到视图?如果某个查询结果出现的非常频繁,也就是,要经常拿这个查询结果来做子查询3.视图的创建语法:createview视图名asselect 语句;4.使用视图有什么好处呢?①简化查询语句 比如:有一张商品表,我们经常要查每个栏目下商品的平均价格 select cat_id,avg(shop_price) from goods gropy by cat_id; 这时候我们就可以创建一张视图: c 阅读全文
posted @ 2013-09-05 11:04 iyjhabc 阅读(269) 评论(0) 推荐(0)
摘要:mysql存储过程详解 转自:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html1.存储过程简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中 阅读全文
posted @ 2013-09-05 10:47 iyjhabc 阅读(206) 评论(0) 推荐(0)