即使解决一个非常简单的问题,往往也有多种方法,但不同的方法之间的效率可能相差甚远,解决问题的效率,跟数据的组织方式有关(好的数据结构),跟算法巧妙程度有关(好的算法)从而跟时间效率空间利用效率有关。(时空复杂性)。
从而,好的程序 = 好的数据结构 + 好的算法。
数据结构的确立(合适的逻辑结构,合适的物理储存实现,操作集之间的关联度)直接影响了算法的可理解性和时间空间效率。
数据结构解决的问题:
1.数据怎么抽象:
从每一个实际问题中将抽象数据提取出来,通过这些数据的特征选择合适的逻辑结构,进而选择最好的物理储存结构。
(有的数据特征没有明显的一对一或一对多或多对多的关系,那么要根据算法实现的复杂性进行选择。物理储存也是如此,总之数据结构的实现与算法的实现之间是相互制约的)。
逻辑结构: 线性结构:表,队列,栈……
非线性结构:树,图……
2.如何使得操作集之间的关联度最小。