码迷,mamicode.com
首页 > 编程语言 > 详细

javase(数组、链表、散列表)

时间:2020-03-06 21:43:48      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:效率   删除   支持   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)

 

三、散列表(哈希表)

1、冲突

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

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

2、链地址法

技术图片

 

 

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

3、特点

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

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

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

4、优点

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

5、缺点

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

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

 

javase(数组、链表、散列表)

标签:效率   删除   支持   javase   动态   性能   分配   根据   连续   

原文地址:https://www.cnblogs.com/zhai1997/p/12430996.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!