摘要: 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。堆可以动态地扩展和收缩。 自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。 全局/静态存储区,全局变量和... 阅读全文
posted @ 2013-08-22 16:54 中山佚名 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 求解图中的最短路径算法有:Dijkstra算法和Floyd算法。Dijkstra算法:求带权有向图中某个源点到其余各顶点的最短路径,最常用的是Dijkstra算法。该算法设置一个集合S,记录已求得的最短路径的顶点,初始时把源点V0放入S中。此外,在构造过程中还设置了两个辅助数组:dist[]:记录了从源点V0到其他个顶点当前的最短路径长度。path[]:path[i]表示了从源点到顶点i之间的最短路径的前驱结点,在算法结束前,可根据其值追溯得到源点V0到顶点Vi的最短路径。1)初始化:集合S初始为{0},dist[]的初始值为dist[i]=arcs[0][i],i=1,2,3,……2)从顶点 阅读全文
posted @ 2013-08-15 17:14 中山佚名 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局变量。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的方法就是让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且提供一个访问该实例的方法。Singleton-instance(私有变量)-Singleton(私有构造函数)+GetInstance(公有函数)代码如下:class Singleton{ private static Singleton instance; private Singleton(){ } public Singleton ... 阅读全文
posted @ 2013-08-09 22:01 中山佚名 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 快速排序的时间复杂度为O(nlogn),在排序算法中效率较高,所以经常被采用。快排的思想为分治法,软件公司笔试面试中经常会考到该算法。 算法的基本思想:1.先从数列中抽出一个数作为基准数2.分区过程,将比这个数大的数全部放在右边,将比这个数小的全放在左边3.对第二步分区得到的两个区在进行分区,直到每一个区中只有一个数算法过程举例:原始数列: 27 99 11 37 92 78 21 35 57 621.抽出一个数作为基数:27(low=0,high=9)2.分区,从右往左找,找到比27小的数(62比27大,high--,57比27大,high—….)21 99 11 37 92 78 27 3 阅读全文
posted @ 2013-08-09 16:59 中山佚名 阅读(151) 评论(0) 推荐(0) 编辑