第三节 数学预备知识

 集合(Set)

由一些确定的、彼此不同的成员(Member)或者元素(Element)构成的一个整体。成员取自一个更大的范围,称为基类型(Base Type)。集合中成员的个数称为集合的基数(Cardinality)。

例如,集合 R 由整数 3、 4、 5 组成,写成 R={3, 4, 5}。

此时R的成员是 3、4、 5, R 的基类型是整型,R的基数是3。

依赖于集合的基类型,它的成员经常有一个线性顺序。

集合的成员叫做该集合的子集(Subset),子集中的每个成员都属于该集合。

没有元素的集合称为空集(Empty Set,又称为 Null Set), 记作Φ。

如上例中, 3 是R 的成员,记为: 3∈R, 6不是R的成员,记为: 6∉R。 {3, 4}是 R 的子集。

 

集合的表示法

1) 穷举法: S={2, 4, 6, 8, 10};

2) 描述法: S={x|x 是偶数,且 0≤x≤10}。

 

3、 集合的特性

1) 确定性:任何一个对象都能被确切地判断是集合中的元素或不是;

2) 互异性:集合中的元素不能重复;

3) 无序性:集合中元素与顺序无关。

 

计量单位(Unit): 按照IEEE规定的表示法标准,字节缩写为“ B”,位缩写为“ b”,兆字节(220字节)缩写为缩写为“ MB”,千字节(210字节)缩写为“ KB”。

 

阶乘函数Factorial Function

阶乘函数 n!是指从 1 到 n 之间所有整数的连乘,其中 n 为大于 0 的整数。因此, 5!=1*2*3*4*5=120。特别地, 0!=1

 

取下整和取上整(Floor and Ceiling):

实数 x 的取下整函数(Floor)记为⌊x⌋,返回不超过 x 的最大整数。例如, ⌊3.4⌋=3,与⌊3.0⌋的结果相同。

实数 x 的取上整函数(Ceiling)记为⌈x⌉,返回不小于 x 的最小整数。例如, ⌈3.4⌉=4,与⌈4.0⌉的结果相同。

 

取模操作符( Modulus):

取模函数返回整除后的余数,有时称为求余。在 C#语言中取模操作符的表示为 n%m。从余数的定义可知, n%m 得到一个整数,满足 n=qm+r,其中 q 为一个整数,且 0≤r<m。

 

对数:

如果a(a>0,a≠1)的b次幂等于N,就是ab=N,那么数b叫做以a为底N的对数(Logarithm),记作logaN=b,其中a叫做对数的底数,N叫做真数。

从定义可知,负数和零没有对数。事实上,因为 a>0,所以不论 b 是什么实数,都有 ab>0,这就是说不论 b 是什么数,N 永远是正数,因此负数和零没有对数。

在一个线性表中查找指定值所使用的折半查找算法:首先与中间元素进行比较,以确定下一步是在上半部分进行查找还是在下半部分进行查找。然后继续将适当的子表分半,直到找到指定的值。一个长度为n的线性表被促逐次分半,直到最后的子表中只有一个元素,一共需要进行多少次呢?答案是log2n次。

 

本书中用到的对数几乎都以 2 为底,这是因为数据结构和算法总是把事情一分为二,或者用二进制位来存储编码。

 

递归

一个算法调用自己来完成它的部分工作,在解决某些问题时,一个算法需要调用自身。如果一个算法直接调用自己或间接地调用自己,就称这个算法是递归的(Recursive)。根据调用方式的不同,它分为直接递归(Direct Recursion)和间接递归(Indirect Recursion)。

 

有很多数学函数是以递归来定义的。

如大家熟悉的阶乘函数,我们可以对n!作如下定义:

阶乘函数的C#语言实现如下。

public static long fact(int n)

{

    if(n <= 1)

       return 1;

    else

       return n * fact(n-1);

}

递归算法通常不是解决问题最有效的计算机程序,因为递归包含函数调用,函数调用需要时空开销。所以,递归比其他替代选择诸如while 循环等,所花费的代价更大。

posted @ 2016-05-19 10:04  贴心小冰棍  阅读(239)  评论(0编辑  收藏  举报