您的位置 首页 java

数组思想与数组知识

有的人掌握了数组知识,觉得不过如此;有的人掌握了数组思想,觉得其很伟大。

数组思想的产生不是凭空产生的,而是立足于丰富的数组知识之上的,是踩坑踩出来的。如果数组知识不丰富,如果在学习的过程中没有踩过坑,那就没有时间投入,也不会花费时间去思考数组,没有时间的付出谈何思想的升华呢?在Java里面,数组的知识并不丰富,大家一学就会,自然就没有机会让人去思考数组了,而在c/c++里面,数组的知识变化多端,在学习的过程中会踩很多的坑,坑踩的多,自然思考的机会就多,花费的时间就多,慢慢就能升华到数组思想了。

我在面试的过程中,经常喜欢问的一个问题是:哈希和数组有什么关系呢?可惜很多人都没有答出来。我觉得,不应该做一个只会搬砖的码农,更应该学会思考,多思考,对数据结构知识深度的掌握,才能提升自我能力。凡是对这个问题没有答出来的人,很难被录取的,因为我觉得连基本的数组都没有掌握好,很难成为成长起来的。这个问题的答案是这样的:

哈希表 的本质就是数组,它是数组的升华。查找元素的过程分为两大步骤:

第一:定位key的哈希值

第二:根据哈希值定位元素的位置

哈希表的查找过程,耗时在计算哈希上面,然后得出哈希值之后定位元素的过程是非常快的。

哈希表的本质就是数组,所以它也是连续的,就完全把它当做普通数组对待就行了。不要被哈希表这个名词所干扰,误认为是高大上的东西。

既然提到了数组思想,那么什么是数组思想呢?我觉得应该包括以下几点:

(1)深刻认识到数组查找的快,快的没边。假如有一堆数据,总量为10000,如果采用 链表 形式去存储,现在想找到中间的数据,则需要查找5000次,而数组则需要1次。如此大的差距,数组查找的快可不是快一点,而是非常快,需要深刻的认知,需要有主观感性的认识。

(2)明白数组查找快的根本原因。

2.1数组是顺序存储,在内存中是一个整块;

2.2 数组元素的定位分为两步:第一步,计算下标i*数组元素大小求出偏移 地址 ;第二步:数组首地址+偏移地址就是元素i的地址

2.3 链表的内存不是连续的,只能一个一个查找,速度自然慢很多了。

(3)认识到哈希表的本质就是数组,它是数组的升华。就是上面提到的内容。

文章来源:智云一二三科技

文章标题:数组思想与数组知识

文章地址:https://www.zhihuclub.com/178357.shtml

关于作者: 智云科技

热门文章

网站地图