• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
小比丘
博客园    首页    新随笔    联系   管理    订阅  订阅
11 2012 档案
8种经典排序算法

摘要:1.冒泡排序(Bubble sort)基本的View Code 1 void BubbleSort(int A[],int n)2 {3 int i,j;4 for(i=1;i<n;i++) //最多做n-1趟排序5 for(j=n-1;j>=i;j--) //从后往前冒泡,最"轻"的冒泡到最前面 6 if(A[j]<A[j-1])7 swap(A[j],A[j-1]);8 }改进的View Code 1 void BubbleSort_O(int A[],int n) 2 { 3 int i,j; 4 for(i=1;i<n;i++){ //最多做 阅读全文
posted @ 2012-11-18 13:54 小比丘 阅读(340) 评论(0) 推荐(0)
静多态和动多态

摘要:多态性可按照发生的时间段分为静多态(Static Polymorphism)和动多态(Dynamic Polymorphism)。其中静多态就是绑定发生在编译期(compile-time),此种绑定称为静态绑定static-binding);而动多态就是绑定发生在运行期(run-time),此种绑定称为动态绑定(dynamic-binding)。静多态可以通过模板和函数重载来实现,具体可以分为:1)非参数化多态(Ad-hoc polymorphism,特别多态): a)函数重载(Function Overloading) b)运算符重载(Operator Overloading)2)参数化.. 阅读全文
posted @ 2012-11-17 16:28 小比丘 阅读(2380) 评论(0) 推荐(0)
SQL数据查询实例1

摘要:现在有三张表:学生表Student(Sno, Sname)课程表Course(Cno, Cname)选课表Student_Course(Sno, Cno, Grade)数据库实例如下:要求用SQL语句检索:1) 选修语文的学生姓名select S.Sno,Snamefrom Student as S,Course as C,Student_Course as SCwhere S.Sno=SC.Sno and C.Cno=SC.Cno and C.Cname='语文'2) 至少选修了语文和数学的学生姓名select S.Sno,Snamefrom Student_Course a 阅读全文
posted @ 2012-11-17 13:30 小比丘 阅读(549) 评论(0) 推荐(0)
聚集索引和非聚集索引的区别

摘要:聚集索引和非聚集索引的区别: 汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同样的,如果查“张”字,那您也会将您的字典翻到最后部分,因为“张”的拼音是“zhang”。也就是说,字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。 如果您认识某个字,您可以快速地 阅读全文
posted @ 2012-11-16 00:29 小比丘 阅读(3564) 评论(0) 推荐(1)
SQL概述

摘要:1.SQL只用了9个动词表示其核心功能:数据查询:SELECT数据定义:CREATE、DROP、ALTER数据操纵:INSERT、UPDATE、DELETE数据控制:GRANT、REVOKE2.SQL支持关系数据库的三级模式结构,其中,视图对应外模式、基本表对应模式、存储文件对应内模式。3.SQL由数据定义语言(DDL)、交互式数据操纵语言(DML)、事务控制、嵌入式SQL和动态SQL、完整性控制和权限管理组成。 阅读全文
posted @ 2012-11-15 23:20 小比丘 阅读(294) 评论(0) 推荐(0)
关系代数运算

摘要:关系操作的特点是操作对象和操作结果都是集合。关系代数运算符有4类:集合运算符(交,并,差,笛卡儿积)专门的关系运算符(选择,投影,链接,除)算数比较符(大于,大于等于,小于,小于等于,等于,不等于)逻辑运算符(与,或,非) 阅读全文
posted @ 2012-11-15 22:40 小比丘 阅读(733) 评论(0) 推荐(0)
完整性约束

摘要:完整性规则保证授权用户对数据库进行修改不会破坏数据的一致性。关系模型的完整性规则是对关系的某种约束条件,分为实体完整性、参照完整性和用户定义完整性三类。1)实体完整性(Entity Integrity)。规定基本关系R的主属性A不能取空值。2)参照完整性(Referential Integrity)。存在于两个关系之间,也称引用完整性,用户描述关系模型中实体及实体间的联系。例如,员工和部门关系模式如下:员工(员工号,姓名,性别,参加工作时间,部门号)部门(部门号,名称,电话,负责人)这两个关系存在着属性的引用,即员工关系中的“部门号”必须是部门关系中的某部门的编号。也就说,员工关系中的“部门号 阅读全文
posted @ 2012-11-15 22:21 小比丘 阅读(573) 评论(0) 推荐(0)
关系数据库的基本概念

摘要:1.属性和域 在现实世界中,一个事物常常取若干特性来描述,这些特性成为属性(Attribute)。每个属性的取值范围对应一个值的集合,成为该属性的域(domain)。一般在关系数据模型中,限制所有的域都是原子数据(atomic data)。例如,整数、字符串是原子数据,而集合、记录、数组是非原子数据。关系数据模型的这种限制称为第一范式(First Normal Form,1NF)条件。2.主要术语目或度(Degree):属性个数n是关系的目或度。候选码(Candidate Key):若关系中某一属性(或属性组)的值能唯一地标识一个元组,则称该属性(属性组)为候选码。主码(Primary Ke. 阅读全文
posted @ 2012-11-15 21:51 小比丘 阅读(8273) 评论(0) 推荐(2)
基本数据类型

摘要:1.层次模型(Hierarchical Model)层次模型采用树形结构表示数据和数据间的联系。在层次模型中,每个结点表示一个记录类型(实体),记录之间的联系用结点之间的连线表示,并且根节点以外的其他结点有且只有一个双亲节点。上层和下一层的联系是1:n联系(包括1:1联系)。特点:记录之间的联系通过指针实现,比较简单,查询效率高。缺点:1)只能表示1:n的联系,2)对插入和删除操作的限制比较多IBM在1968推出的IMS系统是典型的层次模型系统。2.网状模型(Network Model)采用网状结构表示实体类型及实体间联系的数据模型称为网状模型。在网状模型中,允许一个以上的结点无双亲,每个结点 阅读全文
posted @ 2012-11-15 20:15 小比丘 阅读(599) 评论(0) 推荐(0)
E-R模型

摘要:E-R模型是软件设计中的一个重要工具,其主要概念有实体、联系和属性。 1.实体:是现实世界中可以区别于其他对象的“事件”或“物体”。 2.联系:实体的联系分为实体内部的联系和实体和实体之间的联系。实体内部的联系反映数据在同一记录内部各字段间的联系。实体集之间的联系包括: 1)两个不同实体之间的联系 一对一:指实体集E1中的一个实体最多只与实体集E2中一个实体相联系,记为1:1,如观众和座位 一对多:指实体集E1中的一个实体最多只与实体集E2中多个实体相联系,记为1:n,如部门和职工 多对多:指实体集E1中的多个实体最多只与实体集E2中多个实体相联系,记为... 阅读全文
posted @ 2012-11-15 19:12 小比丘 阅读(1569) 评论(0) 推荐(0)
数据模型

摘要:模型是对现实世界特征的模拟和抽象,数据模型是对现实世界数据特征的抽象。最常用的数据模型分为:概念数据模型(信息模型):是按用户的观点对数据和信息建模,是现实世界到信息世界的第一层抽象。他强调语义表达功能,易于用户理解,是用户和数据库设计人员交流的语言,主要用于数据库设计。这类模型中最著名的是实体联系模型(E-R模型)。基本数据类型:按计算机系统的观点对数据建模,是现实世界数据特征的抽象,用于DBMS的实现。基本的数据模型有层次模型、网状模型、关系模型和面向对象模型。从事物的客观特性到计算机中的具体表示涉及三个数据领域:现实世界、信息世界和机器世界。现实世界:现实世界的数据就是客观存在的各种报表 阅读全文
posted @ 2012-11-15 17:06 小比丘 阅读(1169) 评论(0) 推荐(0)
一道人人的笔试题

摘要:2012.10.12下午在交大参加的笔试,记得其中一道题大概是:1 int f(int x,int y)2 {3 if(x<0||y<0) return 0;4 if(x==0||y==0) return 1;5 return f(x-1,y)+f(x,y-1);6 }1)计算f(8,8)的值2)怎么改进函数,降低时间复杂度?当时,第一问,直接一步步迭代算,算了半天,没算出来,将中间过程写出来了,第二问,当时想的是应该是将递归改为非递归,但不知道怎么改,没写!其实这不是在考编程,而是在考数学,再细说,就是在考杨辉三角。以f(3,3)为例,如下图,其展开系数就是杨辉三角的... 阅读全文
posted @ 2012-11-14 22:02 小比丘 阅读(521) 评论(0) 推荐(0)
如果一个正整数可以由连续正整数求和而来,输出所有可能的组合

摘要:在写《判断一个正整数是否可以由连续正整数求和而来》的过程中,看到很多正整数n,可以用不止一组的连续正整数求和而来,如9=2+3+4=4+5,那么怎么求得所有符合要求的区间呢?我还是使用《判断一个正整数是否可以由连续正整数求和而来》提到的模拟法,只是在找到一个符合要求的区间之后,并不返回,而是强制它向右滑动,继续搜索可能的区间。注意搜索只在[1,n]的前半段(即[1,(n+1)/2])进行,因为后半段任意两个数的和都大于n。看代码:View Code 1 #include <iostream> 2 using namespace std; 3 4 //模拟法 5 //用一个在数轴上的 阅读全文
posted @ 2012-11-14 18:42 小比丘 阅读(1357) 评论(0) 推荐(0)
判断一个正整数是否可以由连续正整数求和而来

摘要:58同城面试遇到的问题,判断一个正整数n是否可以由连续正整数求和而来。我没回答上来,面试官给了提示,回来自己想想,觉得有两种方法:模拟法:用一个在数轴上的滑动窗(即一个正整数区间),来模拟求解过程。具体来说,如果滑动窗内整数的和小于n,则滑动窗右边界向右移动,如果滑动窗内整数的和大于n,则滑动窗左边界向右移动,如果滑动窗内整数的和等于n,则n可以由滑动窗内的整数求和表示,程序终止。数学分析法:可以证明(证明在本文最后),如果n可以表示为:n=(2*m+1)*2k,m, k>=0;则m>0时,n可以由连续正整数求和而来,m=0时,n不可以由连续正整数求和而来。实际上,正整数中,只有2 阅读全文
posted @ 2012-11-14 16:47 小比丘 阅读(2182) 评论(0) 推荐(1)
计算用字符串表示的整数四则运算的值

摘要:昨天晚上写完《计算用字符串表示的个位数四则运算的值(栈)》,自己给自己留了个问题?即,怎样计算用字符串表示的整数四则运算的值。这里增加了两个难度,整数的位数不再是一位,而且表达式中可以含括号。下面给出代码:View Code 1 #include <iostream> 2 using namespace std; 3 4 const int MAX=100; 5 6 typedef struct node * pointer; 7 typedef struct node{ 8 bool isNumber; 9 int value; 10 poin... 阅读全文
posted @ 2012-11-14 00:30 小比丘 阅读(712) 评论(0) 推荐(0)
计算用字符串表示的个位数四则运算的值(栈)

摘要:比如eval("1+4*3/2-5")=2View Code 1 #include <iostream> 2 using namespace std; 3 4 int calculate(char *expStr) 5 { 6 int stack[100]; 7 int top=-1; 8 stack[++top]=expStr[0]-'0'; 9 for(int i=1;i<strlen(expStr);i+=2)10 if(expStr[i]=='*')11 stack[top]=stack[top]*(expSt... 阅读全文
posted @ 2012-11-13 00:35 小比丘 阅读(550) 评论(0) 推荐(0)
Joseph问题(循环链表)

摘要:循环链表最著名的应用就是Joseph问题:Josephu问题:据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人找到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。 如何用循环链表来求解Josephu问题?View Code 1 . 阅读全文
posted @ 2012-11-12 19:17 小比丘 阅读(2255) 评论(0) 推荐(0)
一天中,时针和分针相遇多少次,时分秒针相遇多少次?

摘要:1 #include <stdio.h> 2 3 //设置时分秒针的速度 4 //时针720秒走一格,分针60秒走一格,秒针1秒走一格,钟表一圈共60格 5 //因此时针速度为1/720,分针速度为1/60,但在程序中为了便于实现,全部扩大720倍 6 //所以得出如下宏定义 7 int main() 8 { 9 int vh=1; //时针速度10 int vm=12; //分针速度11 int vs=720; //秒针速度12 int circle=12*3600;13 14 int n=0; 15 int t=... 阅读全文
posted @ 2012-11-12 15:59 小比丘 阅读(4554) 评论(0) 推荐(0)
C/C++计算阶乘n!末尾所含0的个数

摘要:#include <iostream>using namespace std;int SumFactZeros(const int n){if(n<0) exit(0); if(n<5) return 0; int counter=0; for(int i=5;i<=n;i++){ int flag=i; while(flag%5==0) { flag/=5; counter++; } } return counter;}int SumFactZeros_recursion(const int n){ if(n<0) exit(0); if(n<5) 阅读全文
posted @ 2012-11-08 21:04 小比丘 阅读(2464) 评论(0) 推荐(0)

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3