数据结构学习总结

第一章

1. 1算法时间复杂度分析

算法中基本操作的执行次数作为时间复杂度的度量。这里说的时间复杂度是其中基本操作的总次数
1.时间复杂度的计算
在算法中总能看到一个n,可称为问题的规模,则基本操作所执行的次数是n的一个函数f(n),对求出的f(n),取出其中随n增大而增长最快的项,将系数改成1,作为时间复杂度的度量。记为T(n)=O(f(n)中增长最快的项/此项的系数)
例:f(n)=2n3+4n2+100, T(n)=O(2n3/2)=O(n3)。
一般的规律如下:
1.f(n)与n无关时,T(n)=O(1)
2.f(n)与n是线性关系时,T(n)=O(n)
3.f(n)与n是二次方关系时,T(n)=O(n2)
代码例题精讲:
例【1】:

void fun(int n)
{
    int i=1,j=100;
    while(i<n)
     {
    	 ++j;
    	 i+=2;
    }
}

分析:1.确定规模:由循环条件i<n,说明执行次数与参数n有关,则n就是规模。
2.计算出函数f(n),i初始值是1,每次自增2,假设自增m次结束。则i=1+2m,因此有1+2m+K=n(K是常数)。
m=(n-1-K)/2,即f(n)=(n-1-K)/2。增长最快的项为n/2.则T(n)=O(n)。
例【2】

void fun(int n)
{
	int i, j, x = 0;
	for (i = 0; i < n; i++)
		for (j = i + 1; j < n; ++j)
			++x;
}

分析:++x位于内层循环中,因此作为基本操作。n为规模。则执行次数为f(n)=n(n-1)/2,变化最快的是n^2/2
所以T(n)=O(n^2)。

1.2 基本概念

1.数据结构:相互之间存在一种或多种特定关系的*数据元素* 的集合。包括:逻辑结构,存储结构和对数据的运算
2.逻辑结构:数据之间关系的描述。与存储结构无关,一种逻辑结构可有多种存储结构。
共包含两类:

  • 线性结构:一个数据元素的有序集合。基本特征:
    1.必存在唯一的一个第一个元素。
    2.必存在唯一的一个最后一个元素。
    3.除最后一个元素外,其他元素均有唯一的后继。
    4.除第一个元素外,其他元素均有唯一的前驱。
  • 非线性结构:存在着一对多的关系,其中有树形结构和图形结构。

3.物理结构:又称存储结构,是数据的逻辑结构在计算机中的表示。包括数据元素的表示和关系的表示。

1.3 算法的基本知识

一.算法的特性:

  1. 有穷性:一个算法必须保证执行有限步骤之后结束。
  2. 确定性:算法的每一步骤必须有确定的定义。
  3. 可行性:算法中的所有操作都必须可以通过已经实现的基本操作进行运算,并在有限次内实现。
    二 算法的设计目标正确性可读性健壮性算法效率4个方面。也称为评价算法质量的主要方面。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值