第三节 数学预备知识

 集合(Set)算法

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

例如,集合 R 由整数 三、 四、 5 组成,写成 R={3, 4, 5}。数据结构和算法

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

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

集合的成员叫作该集合的子集(Subset),子集中的每一个成员都属于该集合。对象

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

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

 

集合的表示法it

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

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

 

三、 集合的特性

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 循环等,所花费的代价更大。

相关文章
相关标签/搜索