摘要: 引言 自发表上一篇文章至今(事实上,上篇文章更新了近3个月之久),blog已经停了3个多月,而在那之前,自开博以来的21个月每月都不曾断过。正如上一篇文章支持向量机通俗导论(理解SVM的三层境界)末尾所述:”额,blog许久未有更新了,因为最近实在忙,无暇顾及blog。“与此同时,工作之余,也一直在闲心研究数据挖掘:"神经网络将可能作为Top 10 Algorithms in Data Mining之番外篇第1篇,同时,k-最近邻法(k-nearest neighbor,kNN)算法谈到kd树将可能作为本系列第三篇。这是此系列接下来要写的两个算法,刚好项目中也要用到KD树“。 但很显 阅读全文
posted @ 2013-09-24 17:24 红宝石 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 小题:(部分题目)1、有三个结点的,可以构成多少个种叉树?2、一副牌52张(去掉大小王),从中抽取两张牌,一红一黑的概率是多少?编程题:3、设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。情特别注意优化时间复杂度的常数。4、已知三个升序整数数组a[l], b[m]和c[n]。请在三个数组中各找一个元素,是的组成的三元组距离最小。三元组的距离定义是:假设a[i]、b[j]和c[k]是一个三元组,那么距离为:Distance = max(|a[ I ] – b[ j ]|, |a[ I ] – c[ k ]|, |b[ j ] – c[ k 阅读全文
posted @ 2013-09-24 17:14 红宝石 阅读(371) 评论(0) 推荐(1) 编辑
摘要: 题记 本博客自2010年10月11日开通以来,已经帮助了一大批人找到工作,特别是连续三年在每一年的9、10月份陪伴了至少三届毕业生找工作的旅程,包括校招中的笔试面试,今年也不会例外,我会在本博客开通3周年之际一如既往的陪伴大家一起成长。 本文所整理的全部笔试面试题要么来源于我群内群友们的分享,要么摘自论坛或博客,所有原题均来自网络。虽然本文中整理的绝大部分笔试面试题偏算法(自己特意为之之故),但不论是哪一年的校招,一般说来,笔试偏基础(尤其是选择题部分,涵盖语言,计算机组成原理、操作系统、网络协议、数据库、概率期望等知识),而面试则偏算法,且无论是笔试还是面试,两者都很看重你的实际编程能力.. 阅读全文
posted @ 2013-09-24 16:59 红宝石 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 一、实验目的:设计、编制、调试一个词法分析子程序-识别单词,加深对词法分析原理的理解。二、实验要求:1.对给定的程序通过词法分析器弄够识别一个个单词符号,并以二元式(单词种别码,单词符号的属性值)显示。而本程序则是通过对给定路径的文件的分析后以单词符号和文字提示显示。2.本程序自行规定:(1)关键字"begin","end","if","then","else","while","write","read","do" 阅读全文
posted @ 2013-09-24 16:01 红宝石 阅读(470) 评论(0) 推荐(0) 编辑
摘要: 1.概念先搞清楚 抽象类:首先抽象类是类的概念,描述的是“是什么”。除了具有类的所有特性之外,它还有自己独特的性质(这里讲的是抽象类和类的区别了):只有抽象类中才可以有抽象方法,实体类中不能定义抽象方法;抽象类不能被封闭(sealed),必须可以被其它类继承;派生出来的实体类必须实现抽象类中定义的抽象方法,当然如果派生出来的类依然是抽象类,则可以不实现。 接口:接口是引用类型的一种,描述的是“能做什么”。接口的特性:接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的。除此之外,不能包含任何其他的成员,例如:常量、域、构造函数、析构函数、静态成员。一个类可以.. 阅读全文
posted @ 2013-09-24 14:56 红宝石 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 设计模式学习笔记-适配器模式1. 概述 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。2. 解决的问题 即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。3. 模式中的角色 3.1 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 3.2 需要适配的类(Adaptee):需要适配的类或适配者类。 3.3 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。 4. 模式解读 注:在GoF的设计模式中,对适配器模式讲... 阅读全文
posted @ 2013-09-24 14:18 红宝石 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。冒泡法:这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。直接插入排序:O(n*n)选择排序:O(n*n)快速排序:平均时间复杂度log2(n)*n,所有内部排序方法中最高好的,大多数情况下总是最好的。归并排序:log2(n)*n堆排序:log2(n)*n希尔排序:算法的复杂度为n的1.2次幂这里我没有给出行为的分析,因为这个很简单,我们直接来分析算法:首先我们考虑最理想的情况1.数组 阅读全文
posted @ 2013-09-24 14:05 红宝石 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 1.冒泡排序:n*n。俩个for循环决定其时间复杂度为n^2templatevoidSwap(TA[],inti,intj){Ttmp=A[i];A[i]=A[j];A[j]=tmp;}//冒泡法bubblesorttemplatevoidBubSort(TA[],intn){for(inti=0;ivoidSwap(TA[],inti,intj){Ttmp=A[i];A[i]=A[j];A[j]=tmp;}templatevoidSelSort(TA[],intn){for(inti=0;i(A,i,largIndex);//只进行最后一次交换}}3.直接插入排序:n*n。俩个for循环。/ 阅读全文
posted @ 2013-09-24 14:04 红宝石 阅读(627) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #include /*进程控制块数据结构*/typedef struct node{ char name[10];/*进程名*/int prio; /*进程优先级*/int round; /*进程分配的时间片*/int cputime; /*进程消耗的CUP时间*/int needtime; /*进程需要的CUP时间*/int count; /*进程运行时间*/char state; /*进程的状态:'R':运行,'W':等待,'F':结束*/struct node *next;/*指向下一个 阅读全文
posted @ 2013-09-24 13:44 红宝石 阅读(2453) 评论(0) 推荐(0) 编辑
摘要: 函数指针数组的定义函数指针数组的定义方法,有两种:一种是标准的方法;一种是蒙骗法。第一种,标准方法:{分析:函数指针数组是一个其元素是函数指针的数组。那么也就是说,此数据结构是是一个数组,且其元素是一个指向函数入口地址的指针。根据分析:首先说明是一个数组:数组名[]其次,要说明其元素的数据类型指针:*数组名[].再 次,要明确这每一个数组元素是指向函数入口地址的指针:函数返回值类型 (*数组名[])().请注意,这里为什么要把“*数组名[]”用括号扩起来呢?因为圆括号和数组说明符的优先级是等同的,如果不用圆括号把指针数组说明... 阅读全文
posted @ 2013-09-24 13:37 红宝石 阅读(186) 评论(0) 推荐(0) 编辑
摘要: .Net提供了接口,这个不同于Class或者Struct的类型定义。接口有些情况,看似和抽象类一样,因此有些人认为在.Net可以完全用接口来替换抽象类。其实不然,接口和抽象类各有长处和缺陷,因此往往在应用当中,两者要结合来使用,从而互补长短。 接下来先说说抽象类和接口的区别。 区别一,两者表达的概念不一样。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“是”的关系;而接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,是“行为需要按照接口来完成”。这些听起来有些虚,举个例子。例如,狗是对于所有狗类动物的统称,京哈是狗,牧羊犬是狗,那么狗的一般特性.. 阅读全文
posted @ 2013-09-24 13:29 红宝石 阅读(158) 评论(0) 推荐(0) 编辑