超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键候选键(candidate key):不含有多余属性的超键称为候选键主键(primary key):用户选作元组标识的一个候选键程序主键
比如一个小范围的所有人,没有重名的,考虑以下属性
身份证 姓名 性别 年龄
身份证唯一,所以是一个超键姓名唯一,所以是一个超键(姓名,性别)唯一,所以是一个超键(姓名,性别,年龄)唯一,所以是一个超键--这里可以看出,超键的组合是唯一的,但可能不是最小唯一的
身份证唯一,而且没有多余属性,所以是一个候选键姓名唯一,而且没有多余属性,所以是一个候选键--这里可以看出,...
前几天在论坛看到一个帖子,计算组合数,有点数学基础的都知道,求组合用公式Cnr(= n!/(n-r)!r!)可以得到组合数。怎样通过程序实现得到每一个组合序列呢?以整型数据为例:Ex: N = {1,2,3,4,5} 从N中5个元素取2个得到 12 13 14 15 23 24 25 34 35 45 ——10个组合 这里可以看到组合出现是有规律的,每个组合总是按N中元素顺序出现(组合不是排列,12和21属于同一组合),其次,相邻组合后者在前者基础上从最末元素开始按N中元素顺序递增。这是个很有用的信息,如果我们要输出每个组合序列,我们可以很自然的联想到最直观的解决办法...
堆是一个重要的数据结构,(二叉)堆数据结构是一种数组对象,可以看成一棵完全二叉树,没个结点与数组中的存放位置对应。
表示堆的数组有两个属性:length[A],heap_size[A],前者是数组A中元素个数,后者指相应堆中的有效元素,所以heap_size[A]<=length[A]。给定某结点的下标,可以得出其父结点parent(i),左孩子left(i),右孩子right(i)。
parent(i) return i/2(下取整) left(i) return 2i right(i) return 2i+1
二叉堆有两种:1.最大堆 2.最小堆
最大...
从来没写过这个东西,今天花时间做了一个,由于没有规范的需求,功能说明,我就按照自己的想法写了,呵呵,应该也差不到哪去吧。
基本数据结构:单向链表
功能:添加信息 删除信息 查看信息 统计信息 保存信息
我把它定义为一个类似程序的框架结构,所以可以按需要在此上加工,改良。
以下为运行界面截图:
点击下载执行文件和源代码—-UploadFiles/2007-8/812899595.rar
(注:开发环境vs2005,编译源代码时,要建立一个名为inf.data的文件作为保存记录文档在相同目录,形式详见下载包)
仓促完成,欢迎debug,不足之处请...
随机化算法在分析某些涉及概率分析的问题上具有重要意义,因为输入的分布是我们不能预知的,我们想让分析的问题达到一个平均的状态,就得依靠随机化,把输入分布重新排列,使之成为一个脱离其他外界因数的排列,同时要保证出现这个排列的概率为1/n!。
下面,有两个常用的算法来实现输入分布的随机化,以给定的输入数组为例,我们的目标是把A[1..n]随机排列。
方法一:
为数组的每个元素A赋一个随机的优先级P,然后依据优先级对数组A中的元素进行排序。例如,数组A = {1,2,3,4},选择一个随机优先级P = {36,3,97,19},将得出数组A的排列B = {2,4,1,3},因为第2个优先级...
在标准库算法中,next_permutation应用在数列操作上比较广泛.这个函数可以计算一组数据的全排列.但是怎么用,原理如何,我做了简单的剖析.
首先查看stl中相关信息.函数原型:
template<class BidirectionalIterator> bool next_permutation( BidirectionalIterator _First, BidirectionalIterator _Last );template<class BidirectionalIterator, class BinaryPredicate> bo...