这段时间开始学习软考里面的内容,对顺序表和链表,比较着学习理解的更多了,跟大家分享一下。
一、空间性能
1、存储密度:
顺序表存储一个数据用一个空间;而链式存储,存储数据的同时还要存储指针,此时用链式表存储数据要用两个空间。所以,存储密度(数据的密度)上,顺序存储更优;
2、容量分配:
我们使用的数组采用顺序存储的方式,在使用之前,会先定义数组的容量,比如:intArray= new int[10];而链式存储,可以动态添加,需要时再添加,用指针指向新添加的数据。
二、在时间性能上
1、插入和删除
链式存储中删除和插入节点影响的量只有一个节点,删除节点,前驱节点用指针直接指向后继节点;插入节点,把插入节点的后继节点指向插入节点的位置,前驱节点再用指针直接指向插入节点,只需要1的时间复杂度。
顺序存储删除某个节点后,还要把后面的节点前移(除了删除最后一个)。插入时要把节点后移(除了插到最后)。链式存储的时间复杂度优于顺序存储;
2、查找
链式和顺序存储相同,都是使用顺序查找,从第一个元素开始,依次向后查找,消耗的时间相同。但如果顺序表的数据按从小到大的顺序排列,使用二分查找法,效率会提高;
3、读运算
顺序表:随机存取;
链表:从第一个元素开始,next——>next…查到最后,最好的情况是,需要的元素在第一个位置,时间复杂度是1。最坏的情况是,需要的元素在最后一个位置,时间复杂度是n。
再次学习软考的内容,理解的更多了些,如果有歧义的地方,希望大家指出,帮小虾米度过难关。