常用的数据结构与算法一

                                          常用的数据结构与算法一

数据结构:数据之间相互存在的一种或者多种特定关系的元素的集合

1 数据之间的逻辑结构 : 集合结构;线性结构;树形结构;图形结构

                     物理结构【存储结构】:顺序存储结构; 链式存储结构

一 常用的数据结构有:

    数组,字符串【array String】

    链表【linked-list】

    栈【Stack】

    队列 【Queue】

    双端队列【deque】

    树【tree】

     数组优缺点:

     优点:   1 构建数组简单

                   2 查找速度快   能让我们在O(1)的时间里根据数组的下标index查询某个元素

     缺点:   1 构建数组必须分配一段连续的空间

                   2 判断某个元素是否存在需要遍历整个数组,耗费O(n)的时间(n是元素的个数)

                   3 删除个添加某个元素时 同样耗费O(n)的时间

   链表的组成结构:https://blog.csdn.net/xuwb123xuwb/article/details/105435213

    链表通常由一连串节点组成,每个节点包含该节点的数据和指向上一节点或者下一节点的引用

   

    单链表和双链表

    单链表:链表中的每个元素实际上是一个单独的对象,而所有对象都通过每个元素中的引用字段链接在一起。

    双链表:与单链表不同的是,双链表的每个节点中都含有两个引用的字段

    链表的优缺点:

    优点:1 链表能灵活的分配内存空间

               2 能在O(1)时间内删除或者添加元素,前提是该元素的前一个元素已知,当然也取决于是单链表还是双链表,在双链表中如果已知该元素的后一个元素,同样可以在O(1)时间内删除或者添加该元素

     缺点:1不像数组能通过下标迅速读取元素,每次都要从链头开始一个一个读取

                2 查询第K个元素需要O(k)时间

    应用场景:如果要解决的问题里边需要很多快速查询,链表可能并不合适;如果遇到的问题中,数据的元素个数不确定,而且需要经常进行数据的添加和删除,那么链表会比较合适。而如果数据元素大小确定,删除插入的操作并不多,那么数组可能更合适。

 

   

       

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值