Android面试之数据结构篇

一、常用的数据结构

数组(Array)、链表(Linked List)、(Heap)、(Stack)、队列(Queue)、(Tree)、(Graph)、散列表(Hash)

数组:有限个相同类型的数据的有序的集合。

特点:优点

            1、按照下标查询,查询速度快。

            2、按照下标遍历方便。

           缺点

            1、插入一个其它的需要移动位置,故而插入慢。

            2、数据类型单一。

链表:物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。分单向链表、双向链表、循环链表。

特点:优点

           1、根据左右两个指针便可插入,故而插入速度快。

           2、不需要初始化容量。

           缺点

           1、需要遍历整个链表查询,故而查询慢。

           2、含有大量指针域,占用空间大。

:一种特殊的树,完全二叉树。分大顶堆和小顶堆。

Android面试之数据结构篇_第1张图片此图画很好,转用

特点

       大顶堆:小数据的元素插入、删除快,大数据的元素慢。

       小顶堆:大数据的元素插入、删除快,小数据的元素慢。        

:一种特殊的线性表。

Android面试之数据结构篇_第2张图片

特点:先进后出,或者说后进先出。

队列:一种特殊的线性表。

Android面试之数据结构篇_第3张图片

特点:先进先出,或者说后进后出。

缺陷:只要操作出,即需要移动大量元素。

      假溢出:顺序队列因多次入队列和出队列操作后出现的尚有存储空间但不能进行入队列操作的溢出。

      真溢出:顺序队列的最大存储空间已经存储满,但又要求进行入队列操作的溢出。

:典型的非线性结构,由n(n>=1)个有限节点组成具有层次关系的集合。

       常用的二叉树,又扩展为平衡二叉树、红黑树、B+树等。

特点:查找、插入、删除都很快,算法复杂。

:另一种非线性结构。

特点:高效,算法复杂。

散列表:散列表也叫哈希表,根据关键码值(key value)进行访问的结构。

你可能感兴趣的:(android,kotlin)