数据结构-概论

一些非数值计算问题的数学模型不再是数学方程,而更多的是表、树、图之类的数据结构。


一般来说,算法 + 数据结构 = 程序


一些基本概念:


数据(Data)在计算机科学中指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素(Data element)数据的基本单位,通常作为一个整体进行考虑。

数据项(Data item)是数据的不可分割的最小单位

数据对象(Data object):性质相同的数据元素的集合,是数据的一个子集。

数据结构(Data structure)-数据元素之间的相互关系。

        ↓

一般包括:逻辑结构、物理结构(或存储结构)和数据的运算及实现。

按逻辑结构分:线性结构非线性结构

数据的逻辑结构四大类:集合结构、线性结构(1->1)、树型结构(1->多)、图型结构(||网状结构)(多->多)。

数据的存储结构四大类:顺序存储结构、链式存储结构、索引存储结构和散列存储结构。

算法


算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构


算法的五个特性*:


有穷性(有穷步骤后一定能结束)

确定性(输入相同/状态相同,所得结果需相同)

可行性(每步能通过已实现的基本运算有限次运行实现)

可输入

有输出(1个 || 多个)


描述算法可以用多种不同的表示方法:自然语言表示法、流程图、N-S图、伪代码、计算机语言。


算法的效率

     

->时间效率 & 空间效率。



算法时间复杂度:运算时所消耗的时间。

算法空间复杂度:实现所占的空间大小。


一般关注

-T.worst(n)最坏情况复杂度*

-T.avg(n)平均复杂度


T.avg(n)<=T.worst(n)


若存在两段算法,其复杂度分别为T1(n)=o(f1(n))和T2(n)=o(f2(n))

拼接上界为最大的,嵌套上界为两复杂度相乘。


for时间复杂度=次数*循环体复杂度

if-else 复杂度= 取最大的复杂度



常见的时间复杂度有:

O(1)

常数时间,即算法的时间复杂性与输入规模n无关。

O(log2n)

次线性时间

O(Sqrt(n))

O (√n)

O(n)

线性时间

O(nlog2n)

(nlog2n)时间

 

O(n2)

平方时间

 

O(n3)

立方时间

O(2n)

指数时间


计算算法时间复杂度,按增长率递增排列顺序:


 O(1)< O(log2n)< O(√n) < O(n)< O(nlog2n)< O(n2)< O(n3)< O(2n)<O(n!)<O(nn)


算法复杂度附例:(设问题规模为n)

1.

num1=100;num2=99;
    while (num1+num2<=n)
      if (num1>num2)
       num2++;
      else
       num1++;


时间复杂度为O (n) .

2.

num1=1;
while(num1<=n) num1=num1*2;


时间复杂度为O (log2n) .

3.

for(num1=0;num1<n;i++)
        { num2=1;
           while(num2<=n)
             num2=num2*2;
        }
时间复杂度为O (nlog2n) .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值