摘要: 前几天学习了并查集和trie树,这里总结一下trie。 本文讨论一棵最简单的trie树,基于英文26个字母组成的字符串,讨论插入字符串、判断前缀是否存在、查找字符串等基本操作;至于trie树的删除单个节点实在是少见,故在此不做详解。lTrie原理Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。lTrie性质好多人说trie的根节点不包含任何字符信息,我所习惯的trie根节点却是包含信息的,而且认为这样也方便,下面说一下它的性质 (基于本文所讨论的简单trie树)1.字符的种数决定每个节点的出度,即branch数组(空间换时间思想)2.branch数 阅读全文
posted @ 2012-04-25 13:12 Velx 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p );// 用C风格的字符串p作为初始化值//…}String s1 = “hello”;//OK 隐式转换,等价于String s1 = String(“hello”);但是有的时候可能会不需要这种隐式转换,如下:class String { String ( int n );//本意是预先分配n个字节给字符串String ( const char* p );// 用C风格的字符串p作为初始化值//…}下面 阅读全文
posted @ 2012-03-30 15:40 Velx 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 在Oracle中建库,通常有两种方法。一是使用Oracle的建库工且DBCA,这是一个图形界面工且,使用起来方便且很容易理解,因为它的界面友好、美观,而且提示也比较齐全。在Windows系统中,这个工具可以在Oracle程序组中打开(”开始”—“程序”—“ Oracle - OraDb10g_home1”—“ Configuration and Migration Tools”—“ Database Configuration Assistant”),也可以在命令行(”开始”—“运行”—“cmd”)工具中直接输入dbca来打开。另一种方法就是手工建库,这也就是下面所要讲的内容。手工建库比起使用 阅读全文
posted @ 2012-03-12 20:26 Velx 阅读(760) 评论(0) 推荐(0) 编辑
摘要: 应届生经典面试题:说说进程与线程的区别与联系 这问题,估计计算机专业的同学在找研发等工作的时候都会遇到过。前几天某老牌软件厂商的电话面试就提到了这一经典问题,今天招聘会上又有不少同学说在面试的时候被问到这点。在这里我就起个头,大家有啥想法意见等都欢迎回帖交流。 要了解二者的区别与联系,首先得对进... 阅读全文
posted @ 2012-01-03 23:27 Velx 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 神一般的C语言指针 1.一个指向整型数据的指针 2.一个指针的指针,它指向的指针指向一个整型数据 3.一个有十个指针的数组,该指针指向整型数据 4.一个指向有十个整型数据数组的指针 5.就一个函数(不是函数指针),该函数有一个整型参数,返回值为一个指向整型的指针 阅读全文
posted @ 2011-11-05 15:22 Velx 阅读(37673) 评论(3) 推荐(5) 编辑
摘要: 希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高。以n=10的一个数组49, 38, 65, 97, 26, 13, 27, 49, 55, 4为例第一次gap = 10 / 2 = 549386597261327 阅读全文
posted @ 2011-09-05 14:20 Velx 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速排序,快速搞定。快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数 阅读全文
posted @ 2011-09-03 19:34 Velx 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。//将有序数组a[]和b[]合并到c[]中void MemeryArray(inta[], intn, intb[], intm, intc[]){inti,j,k;i=j=k= 0;while (i<n&&j<m){if (a[i] <b[ 阅读全文
posted @ 2011-09-02 19:14 Velx 阅读(255) 评论(0) 推荐(0) 编辑
摘要: Head First里边给出的场景是: 客户需要这样一个App:一个WheatherData类可以从气象站获得气象信息(temperature, humidity, pressure and so on).一旦这些信息改变,就会更新气象站的三个公告板(CurrentConditionBulletin, StatisticsBulletin and ForecastBulletin, 另外,用户还可以随时增加/删除/更改自己的布告板)。 客户给出了WheatherData的类图:结合以上描述和类图我们已知: 1. 由Getter可以或得气象信息 2. 一旦气象信息有改变,调用measur... 阅读全文
posted @ 2011-09-02 19:11 Velx 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 前阵子,由于项目需要,小弟学习了点Oracle,安装数据库是第一步。当时系统时Ubuntu,不管三七二十一,我用系统中自带的安装软件直接安装,可想而知, 错误连连。网上搜罗了一阵,原来Oracle安装步骤蛮复杂的么? 小弟最近不知从那儿下载了份安装Orale的帮助文档,试安装了几次Oracle,出问 阅读全文
posted @ 2011-09-02 08:00 Velx 阅读(19860) 评论(5) 推荐(2) 编辑