美文网首页
数据结构

数据结构

作者: Jey | 来源:发表于2020-05-15 17:26 被阅读0次

    什么是数据结构

    数据结构是计算机存储、组织数据的方式,是数据之间存在着某种关联的数据元素的集合。

    常见的数据结构:数组、栈、队列、链表、树、图、字典树、散列表(哈希表)

    1. 数据结构种类-----
    1. 线性数据结构:元素之间存在着一对一的关系
    • 栈、队列、数组和线性表(顺序表和链表)
    1. 树形结构:跟上一层的某个节点有关联,并且可以和下层多个节点有关联的数据
    • 树、堆
    1. 图形结构:允许节点之间互相关联

    2. 散列表(哈希表):是根据键(Key)而直接访问在内存存储位置的数据结构。它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。

    2. 线性数据结构-----

    a. 数组和链表

    数组:存放着一组相同类型的数据,需要预先指定数组的长度,不能动态地增减数据。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。

    链表:链表是C语言中一种应用广泛的结构,它采用动态分配内存的形式实现,链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。链表还包含一个头指针,它指向链表的第一个元素,链表查找是根据next指针找到下一个元素

    b. 数组和链表的区别

    (1)数组事先定义长度,不能动态增减数据;链表动态地进行存储分配,可以适应数据动态地增减的情况

    (2)数组从栈中分配空间,申请方便,查找速度快,自由度小;链表从堆中分配空间,自由度大,申请管理比较麻烦

    (3)数组在内存中是连续存储的,可以利用下标索引进行随机访问;链表是链式存储结构,在访问元素的时候只能通过线性的方式由前到后顺序访问,所以访问效率比数组要低

    c. 数组和链表的优缺点

    (1) 优点:
    数组:方便,查找速度快
    链表:大小不固定,灵活扩展,插入删除速度快(改变指向的指针即可),内存利用率高。

    (2) 缺点:
    数组:插入删除效率低(动了需要移动其他位置),对内存要求高,需要连续内存,大小固定
    链表:每次查找须从第一个指针开始遍历

    d. 栈和队列

    两者相似,队列是另一种顺序存储元素的线性数据结构。
    栈与队列的最大差别在于栈是LIFO(后进先出),而队列是FIFO,即先进先出。

    3. 哈希表-----

    把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里。

    优点:对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快定位。结合了数组和链表的优点

    iOS中 NSDictionary和NSMutableArray底层实现原理就是哈希表,原理

    4. 排序算法-----

    参考:iOS排序算法
    lua快速排序

    相关文章

      网友评论

          本文标题:数据结构

          本文链接:https://www.haomeiwen.com/subject/oxpcohtx.html