数据结构第一章总结(11.23 英才)

1.数据结构的定义:相互之间存在一种或多种特定的关系数据元素的集合。

2.四类基本逻辑结构:1)集合

                            2)线性      一对一

                            3)树形      一对多

                            4)图状/网状     多对多     且每个元素可与多个元素相连

3.数据的基本单位:数据元素

4.数据不可分割的最小单位:数据项

5.数据结构在计算机中表示的表示称为:数据的物理结构/存储结构

6.最小的二进制数称为:位

7.位串中对应各个数据项的子位称为:数据域

8.计算机中数据元素之间两种表示:顺序映像,非顺序映像

9.四种不同的存储结构:1)顺序存储

                                       2)链式存储

                                       3)索引存储

                                       4)散列

10.和数据结构密切相关,是一个值的集合和定义在这个集合上的一组操作系统的总称称为:

数据类型

11.一个数学模型以及定义在该模型上操作:抽象数据类型

12.函数:

main主函数:为所有函数的入口

void返回值:表示无返回值

define定义常量

typedef定义别名

return返回值:    return 表达式

Status    函数类型为Status

13.运算符:

&与运算     与0则0

|或运算       与1为1

^异或运算  相同为0,不同为1

14.算法:

定义:对特定问题求解步骤的一种描述,它的指令的有限序列,其中每一条指令表示一个或多个操作。

特性:1)有穷性

           2)确定性

           3)可行性

           4)输入

           5)输出

算法的设计要求:

1)正确性

2)可读性

3)健壮性

4)效率与低存储量需求

算法效率度量:

1)时间复杂度

2)空间复杂度

算法的相关因素:

1)策略

2)规模

3)语言

4)质量

5)速度

时间复杂度的计算:

有如下代码:

void fun(int n){
     int i = 1;
     while(i<=n)
          i=i*2
}
       

接下来我们来分析这个进程:

我们将运行次数设为k,运算一次的结果设为n

那么我们在运行第一次的时候k=0   n=1(未运行时i默认为1)

运行一次时 k=1  n=2

第二次        k=2   n=2*2=4

第三次        k=3   n=2*2*2=8

第四次        k=4   n=2*2*2*2=16

.......

第m次         k=m  n=2的m次方

即有            eq?n%3D2%5E%7B%5E%7Bk%7D%7D   即有eq?k%3D%5Clog_%7B2%7Dn

 

接下来我们看这个进程:

有代码如下:

void fun(int n){
     int i=0;
     while (i*i*i<=n)
          i++;     
}

k=0时      n=0

k=1         n=1

k=2         n=eq?2%5E%7B%5E%7B3%7D%7D

k=3         n=eq?3%5E%7B_%7B3%7D%7D

k=m        n=eq?m%5E%7B_%7B3%7D%7D

即有      n=eq?k%5E%7B%5E%7B3%7D%7D         k=eq?%5Clog_%7B3%7Dk

 

接下来我们看下一个进程:

x=0
while (n>=(x+1)*(x+1))
     x=x+1

k=0   n=1

k=1   n=4

k=2   n=9

k=3   n=16

k=m   n=eq?%28m+1%29%5E%7B_%7B2%7D%7D

既有  n=eq?%28k+1%29%5E%7B_%7B2%7D%7D     k=√n-1

 

我们来看下一个进程

有代码如下:

count=0
for (k=1;k<=n;k*2)
   for(j=1;j<=n;j++)
      count++

双层函数各看各的,我们先看外层函数

第0次  得    1

第1次 得     2

第2次 得     4

第3次 得     8

第n次 得     eq?2%5E%7B%5E%7Bk%7D%7D

k=eq?%5Clog_%7B2%7Dn

接着看内层函数

很明显为       O(n)

所以时间复杂度为O(n*eq?%5Clog_%7B2%7Dn)

 

你可能感兴趣的:(数据结构)