1.无序数组增加的时候直接在末尾追加,删除时,找到需要删除的数据遍历o(n),移动覆盖o(n),所以时间复杂度2o(n),修改直接遍历修改,查找就遍历数组
2.有序数组增加,需要找到插入位置再增加,因此时间复杂度是o(n),**修改操作由于要保证顺序,那么就找到要删的数据删掉再插入数据,简化为删除再增加两个操作,查找的时候用折半查找,只要涉及到除以2的算法时间复杂度一般都为o(logn)
3.栈和队列的增加和删除十分类似
4.无序链表的增加找到无序链表的最后一个插入,插入的时候,找前一个元素,先让插入元素next域指向下一个元素,再让前一个元素的next域指向插入元素
无序链表的删除找到需要删除的元素的前一个元素,让它的next域指向下一个的下一个
5.有序链表增加删除和无序一样 ,修改的时候需要先删掉需要修改的值再增加(2o(n)),不能折半查找,因为有序链表只是逻辑上连续,物理上并不连续。
6.有序树的查找类似于二分查找,增加的逻辑查找类似,都是得先找到。,但是删除要考虑到根节点的情况,需要找到左树的最右节点或者右树的最左节点移动上来,这样仍旧能保证树的有序。因此删除的过程是找代替点,仍旧是查找的时间复杂度,修改仍旧是先删除后增加。
有序的修改时先删后加就好了。
数据结构2 常见数据结构的增删改查
最新推荐文章于 2024-07-18 13:20:33 发布