|
发表于 2017-8-6 15:40:57
|
显示全部楼层
◆ 散列存储方法:就是根据结点的关键字直接计算出该结点的存储地址。
渐近时间复杂度的表示法T(n)=O(f(n)),这里的"O"是数学符号,它的严格定义是"若T(n)和f(n)是定义在正整数集合上的两个函数,则T(n)=O(f(n))表示存在正的常数C和n0
,使得当n≥n0时都满足0≤T(n)≤C·f(n)。"用容易理解的话说就是这两个函数当整型自变量n趋向于无穷大时,两者的比值是一个不等于0的常数。这么一来,就好计算了吧。
求某一算法的时间复杂度是关于N的统计,下面的例子很有反面意义
x=91; y=100;
while(y>0)
if(x>100)
{x=x-10;y--;}
else x++;
◆ T(n)=O(1)
◇ 这个程序看起来有点吓人,总共循环运行了1000次,但是我们看到n没有? 没。
◇ 这段程序的运行是和n无关的,就算它再循环一万年,我们也不管他,只是一个常数阶的函数。
算法的时间复杂度仅与问题的规模相关吗?
◆
No,事实上,算法的时间复杂度不仅与问题的规模相关,还与输入实例中的元素取值等相关,但在最坏的情况下,其时间复杂度就是只与求解问题的规模相关的。我们在讨论时间复杂度时,一般就是以最坏情况下的时间复杂度为准的。
增长率由小至大的顺序排列下列各函数: 2^100, (2/3)^n,(3/2)^n, n^n , , n! ,2^n ,lgn ,n^lgn,
n^(3/2)
◇ 分析如下:2^100 是常数阶; (2/3)^n和 (3/2)^n是指数阶,其中前者是随n的增大而减小的; n^n是指数方阶; √n 是方根阶,
n! 就是n(n-1)(n-2)... 就相当于n次方阶;2^n 是指数阶,lgn是对数阶 ,n^lgn是对数方阶,
n^(3/2)是3/2次方阶。根据以上分析按增长率由小至大的顺序可排列如下:
◆ (2/3)^n 有穷性、确定性、可行性、输入、输出
确定性:每条指令不能有二义性,对于同样的输入有同样的输出
可行性:算法中所用到的操作都是已经实现的基本运算或通过有限次能实现的
输入:有0个或多个输入
输出:有一个或多个输出
设计算法的要求(追求的目标)
正确性、可读性、健壮性、效率与低存储量需求
算法原地工作:当空间复杂度为O(1)时,称算法为就地工作(原地工作)。
多型数据类型:是指其值的成分不确定的数据类型。从抽象数据类型的角度看,具有相同的数学抽象特性,故称之为 多型数据类型。
数据结构是一门研究什么内容的学科?
研究非数值计算的程序设计问题中计算机的操作对象以及他们之间的关系和操作等学科
对于一个数据结构,一般包括哪三个方面的讨论?
数据的逻辑结构、存储结构和数据的运算。
逻辑结构有 线形结构(1) , 树型结构 (2) , (3)网状结构 ,集合(4)_四种。
平方和公式: =n*(n+1)*(2n+1)/6
斐波那契数列计算的时间复杂度是O(n)
第1章节有关数据结构算法,上文中为大家作了分析,希望考生对于这些算法能够熟记于心,方便考试的应用和日后的实际操作,预祝大家都能够取得好成绩,加油!
|
|