线性结构 :线性表、堆栈、队列、串、文件等
非线性结构:树、二叉树、图、集合等
顺序存储结构 数据元素之间的逻辑关系通过地址直接反应
链式存储结构 数据元素之间的逻辑关系通过指针间接反应
索引存储结构
散列存储结构
逻辑结构
存储结构
查找、插入、删除等操作的时间效率较高,但存储空间开销较大
数据结构主要内容:逻辑结构+存储结构+算法
算法定义:
1.算法是用来解决某个特定课题的指令的集合
2.算法是人们组织起来准备加以实施的一系列有限的基本步骤
3.算法是一组解决问题的清晰指令,它能够对符合一定规范的输入,在有限的时间内获得所需要的输出
算法的基本性质:
输入
输出
有穷性
确定性
有效性
练习:求两个正整数的最大公因子
算法分析:是指对算法质量优劣的评价 目的 改进算法质量 前提 算法必须正确
时空效率高的算法才是一个好的算法,它常常是不懈努力和反复修正的结果
通常从三个方面分析一个算法:
1.依据算法编写的程序在计算机中运行时间多少的度量,称之为时间复杂度(反应算法运行的快慢)
2.依据算法编写的程序在计算机中占存储空间多少的度量,称之为空间复杂度 (反应算法需要的额外空间的多少)
3.其他方面。如算法的可读性、可移植性以及测试性的好坏
时间复杂度
一个程序在计算机中运行时间的多少与诸多因素有关,其中主要有:
1.问题的规模(几乎所有的算法的时间效率都与问题的规模有关)
2.编译程序功能的强弱以及所产生的机器代码质量的优劣
3.机器执行一条指令的时间长短
4.程序中那些关键语句的执行次数(对算法运行时间贡献最大的语句)
练习:求两个n阶矩阵的乘积
C[i][j] = C[i][j] + A[i][k]*B[k][j]
对于算法分析具有重要意义的常见函数值
log2n n nlog2n n^2 n^3 2^n n!