数据结构与算法第一章绪论

一、什么是数据结构

1.数据结构(Data Structure):

是指相互之间具有(存在)一定联系(关系)的数据元素的集合。数据元素之间的相互联系(关系)称为逻辑结构。数据元素之间的逻辑结构有四种基本类型:

集合结构,线性结构,树形结构,图形结构

2.数据结构的形式定义是一个二元组:

B=(k,R)

其中:k是数据元素的有限集,R是K上关系的有限集。

3.逻辑结构和物理结构

 

数据结构与算法第一章绪论_第1张图片

4.逻辑结构思维导图

数据结构与算法第一章绪论_第2张图片

二、数据类型:原子类型和结构类型

1.数字:

存储结构 eg:整型、浮点型、复数型

2.字符串:

通常使用单引号和双引号来创建

(1)字符串链接+

(2)重复输出字符串*

(3)通过索引湖区字符串中的字符[]

(4)截取字符串中的一部分[:]

(5)若包含指定字符则返回Ture("in")

 若不包含指定字符则返回Ture("not in")

(6)原始字符串("r/R")和格式字符串("%")

3.列表(list):使用方括号来创建

4.元组(Tuple):用小括号创建,其中的元素不能修改

5.集合(set):无序且不重复,用{}或set()创建

6.字典:eg

 

数据结构与算法第一章绪论_第3张图片

三、算法

1.算法的定义

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

算法具有以下五个特性:

(1)有穷性: 一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。

(2)有穷性: 一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。

(3)可行性: 一个算法是能行的。即算法描述的操作都可以通过已经实现的基本运算执行有限次来实现。

(4)输入: 一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。

(5)输入: 一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。

2.评价一个好的算法有以下几个标准:

正确性,可读性,健壮性,效率与储存量需求

3.时间复杂度

1.定义

算法中基本操作重复执行的次数是问题规模n的某个函数,其时间量度记作 T(n)=O(f(n)),称作算法的渐近时间复杂度(Asymptotic Time complexity),简称时间复杂度

一般地,常用最深层循环内的语句中的原操作的执行频度(重复执行的次数)来表示。

2.“O”的定义:

若f(n)是正整数n的一个函数,则 O(f(n))表示$M0 ,使得当n n0时,|f(n)| M |f(n0)| 。

3.表示时间复杂度的阶有:

O(1) :常量时间阶

O (n):线性时间阶

O(㏒n) :对数时间阶

O(n㏒n) :线性对数时间阶

O (nk): k2 ,k次方时间阶

4.例子

eg1.由于是一个三重循环,每个循环从1到n,则总次数为: n×n×n=n3 时间复杂度为T(n)=O(n3)

for i in range(1, n):
    for j in range(1, n):
        c[i][j] = 0
        for k in range(1, n):
            c[i][j] += a[i][k]*b[k][j]

 

eg2.Ø语句频度为:2n2 .

 Ø其时间复杂度为:O(n2) ,即为平方阶。

for i in range(1, n):
    for j in range(1, n):
        x += 1
        s += x

 

5.以下六种计算算法时间的多项式是最常用的。其关系为:

O(1)

(1).指数时间的关系为:

O(2n)

(2). 当n取得很大时,指数时间算法和多项式时间算法在所需时间上非常悬殊。因此,只要有人能将现有指数时间算法中的任何一个算法化简为多项式时间算法,那就取得了一个伟大的成就。

4.算法的空间分析

1.定义

 空间复杂度(Space complexity) :是指算法编写成程序后,在计算机中运行时所需存储空间大小的度量。

记作: S(n)=O(f(n))

其中: n为问题的规模(或大小)

2.该存储空间一般包括三个方面:

(1).指令常数变量所占用的存储空间;

(2).输入数据所占用的存储空间;

(3).辅助(存储)空间。

3.一般地,算法的空间复杂度指的是辅助空间

(1).一维数组a[n]: 空间复杂度 O(n)

(2).二维数组a[n][m]: 空间复杂度 O(n*m)

你可能感兴趣的:(数据结构与算法,python,数据结构,算法,人工智能)