01 - 数据结构和算法的认识
了解数据结构和算法的一些基本概念,主要掌握时间复杂度的计算
数据结构是指所有数据元素以及数据元素之间的关系,可以看做是相互之间存在着某种特定关系的数据元素的集合,即可以把数据结构看成是 带结构的数据元素的集合 。
数据的逻辑结构是从逻辑关系上描述数据的,常常将数据的逻辑结构简称为数据结构。
集合:
树形结构:
图形结构:
逻辑结构在计算机中的存储方式。依赖于计算机语言
顺序存储结构:
链式存储结构:
索引存储结构:
散列(哈希)存储结构:
数据类型是一组性质相同的值的集合和定义在此集合上的一组操作的总称,数据类型是数据结构在计算机的具体体现。
注意:
算法是对特定问题求解步骤的一种描述
特性: 有穷性、确定性、可行性、有输入、有输出
算法设计好后,还需要分析算法的优劣,从两方面考虑
一个算法由控制结构和原操作构成,算法的运算时间取决于两者的综合效果,算法执行时间大致为基本运算时所需时间与运行次数的乘积。因此一个算法的执行效率可以由其最基本的运算的执行次数来衡量。
计算公式: T(n)=O(f(n))
说明:
注意: O 的作用在于只求出T(n)的最高阶项,忽略低阶项和常数
O(1)
没有进行循环的算法中,基本运算次数与问题规模无关,所以是常数
对数阶 O(log2n)
次数为x,而2的x次方等于n,那么就是对数阶
线性阶 O(n)
只有一层循环
平方阶 O(n^2)
立方阶 O(n^3)
三层循环,肯定就是n^3了
排序:
O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) <O(2^n) < O(n!) < O(n^n)
也叫加权平均时间复杂度,将执行的概率也加入计算。
是一种特殊的加权平均时间复杂度,把耗时多的操作分摊到耗时低的操作。
这个时间复杂度 其实是O(1),而不是O(n)
算法空间复杂度是指计算算法所需的存储空间, 其计算公式为S(n) = n(f(n))
所以在考察算法的空间复杂度,主要考虑算法执行所需要的临时占用的存储空间大小的量度。
数组逆序,将一维v1.43数组a中的n个数逆序存放在原数组中.
复杂度计算:
说明: