• javase(数组、链表、散列表优缺点)


    一、数组

    1、特点

    (1)数组的长度是固定的,也就是说存储的元素的个数是确定的,数组的大小一旦确定就不能更改了。

             例如:定义一个能存储三个元素的数组,当存储第四个元素的时候会出现错误。

    (2)数组是引用数据类型

    (3)数组中存储的数据的数据类型一定要一致

    (4)在内存中占用连续的内存空间,因此,数组不能定义的太大

    (5)访问方式:直接访问

    (6)存储密度等于1

    2、优点

    (1)访问快,时间复杂度为O(1)

    3、缺点

    (1)插入和删除的时候需要移动大量的元素,效率较低

    (2)数组的长度固定

    (3)内存必须连续

    (4)所有元素数据类型必须相同

    二、链表

    1、特点

    (1)链表类型众多,有单向链表、双向链表、循环链表,每一个结点由两部分组成,

    (2)存储上:不一定占用连续的空间,且不需要事先分配空间,元素个数不确定

    (3)访问方式:顺序访问

    (4)存储密度小于1(分为数据域和指针域)

    2、优点

    (1)增删快,时间复杂度为O(1)

    3、缺点

    (1)只支持顺序访问,时间复杂度为O(n)

    (2)存储密度小,存储密度小于1,而顺序表的存储密度等于1

    三、散列表(哈希表)

    1、冲突

    将六个元素放到容量为七的数组中的时候,虽然数组的容量大于元素的个数,但是,经过哈希函数计算后可能有多个元素映射到同一个位置,这就是冲突,冲突不能避免,但是可以减少冲突的发生。

    常用的哈希函数有:除留余数法、二次探测法、链地址法等

    2、链地址法

    基本思想:相同哈希地址(根据哈希函数得出)的记录链成一单链表,m个哈希地址就设m个单链表,然后用用一个数组将m个单链表的表头指针存储起来,形成一个动态的结构

    链表长度达到8并且元素的个数超过64时,将变为红黑树。

    3、特点

    (1)由哈希值不能得出原始数据

    (2)相同的数据哈希值相同

    (3)哈希算法的冲突要尽可能小

    4、优点

    提高了插入(虽然是基于数组的,但是插入的时候直接根据函数确定插入的位置,不需要移动其他元素)和查询的效率

    5、缺点

    (1)基于数组的,数组创建后难于扩展某些哈希表被基本填满时,性能下降得非常严重,是先要确定存储的数据量

    (2)也没有一种简便的方法可以以任何一种顺序〔例如从小到大〕遍历表中数据。

    总结:

    顺序表:https://www.cnblogs.com/zhai1997/p/13363954.html

    链表:https://www.cnblogs.com/zhai1997/p/13370521.html

  • 相关阅读:
    day01-java开发前奏
    ASP.NET MVC RDLC-导出
    SAS学习目标层次
    Chapter003[SAS DATA步之全解密-02]
    Chapter002[SAS DATA步之全解密-01]
    Chapter001[SAS LICENCE 获取方法]
    VB.NET中如何在字符串中使用双引号
    ASP.NET数据处理进度条
    GridView内容详解(转载)
    js正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码
  • 原文地址:https://www.cnblogs.com/zhai1997/p/12430996.html
Copyright © 2020-2023  润新知