数据结构之哈希表
目录
文彬他是一个很睿智的人,在对哲学、心理学和思维联想方面都是很强的一个人!
背景:
和文彬一同出来去洗手间的路上,又跳又蹦,交流了一下数据结构、从hash 、堆排序开始,这次交流学习非常的开
心和愉快,今天中午收获最大的就是这次的交流。
这次交流中文彬是在引导我,而不是马上告诉我,灌输给我,Hash是什么,他是在调动我的大脑,让我大脑中的
零零碎碎的东西都蹦出来,一步一步的指引着我自己去思考,让我自己去想!我感悟到这才是学习、建立起对比、关
联起来!下面是我们对Hash、堆排序、数据结构的交流小结,敬请指点:
1、Hash表:
我们一开始交流哈希表,我第一个想到的是书本上的散列表章节,而文彬想的第一个是什么叫英语:hash,hash 是
什么东西?
我们马上现查,hash是“一堆剁碎的东西,混杂的, 拼凑东西”从这解释再联系“散列表”,Hash 就是那么的东西。
Hash 就是一些剁碎的、混杂的、散列的东西,散列表就是对一些散列的东西进行排列罢了。怎么排列呢,就来了一
些排列法。
2、堆排序:
首先堆排序是什么东西,干什么的,怎么干?
他在引导我,而不是马上告诉我,灌输给我,一步一步的指引着我自己去思考,调用我的大脑,让我自己去想。
堆排序就是一种算法,算法排序当中的一种,堆排序要借用 “二叉树”,什么是二叉树,什么是树呢,这些如果不会
就回过去看,弄明白什么是树,什么是二叉树,两者有和关系?二叉树又有哪些类,怎么排序和遍历?弄明白了这,
你再回来看 “堆排序”,那还叫上是吗?小菜一碟!
3、数据结构全书的交流:
堆排序跟数据结构又有什么关系?从这一点迁到整个数据结构所有的东西都被我们拉出来了。
堆排序就是排序当中的一种算法罢了,算法又什么,有哪些算法,算法跟数据结构又有毛线关系?这些都需要我们
自己去思考,这样去思考、建立才真正的叫学习呀!
堆排序是算法当中的一种。在教材中,算法又查找和排序。数据结构整个就是有数据和算法,数据具有结构接下来
一下逻辑和物理结构就出来了,数据怎么放就要有算法,所以算法出来了。
把数据结构和算法的“定义”拿出来对比,找关联,共同点和不同点,这才叫做真正的学习。
数据结构:
当然就有存储结构和逻辑结构两种,分别研究数据的实际物理存储和理论上的结构形式。比如在计算机中,数组在
物理的存储介质上(存储器)是连续存储的(比如你家柜子上几层的抽屉,每个抽屉都放些东西,东西就是数据),
而在逻辑结构,就说它是数组形式了。其他还有链表,队列,栈等。物理的存储形式和逻辑结构都不同。所以说数据
结构是数据存储的方式。
算法:
通俗的说就是处理数据的方法。但是数据又用不同的数据结构来存储,所以对于不同的数据结构,算法是不同的
(比如怎样取出,按什么条件方式取出,怎样存储,按什么条件方式存储,还有在不同的数据结构中的排序,插入数
据等等各种操作)。但算法为什么如此之重要呢?因为不同的算法,它的执行效率是不同的,这在实际的工作中式很
重要的,还是以数组举例:对数组中的数据排序,我们开始就学过,冒泡法,选择法,擂台法。。。这些算法都是前
人总结的方法,但是效率也是有差别的。衡量一个算法的优劣的标准就是它的“时间复杂度(执行完需要的时
间)”和“空间复杂度(执行中占用的物理存储空间)”
4、关于实践:
交流到这,我的问题又来了,你看这些我大概都能处理,但是有时一到具体的题又不会了?这咋办呢?
文彬:问题就在这“大概”,你是真的会了吗?真正的精华就是在理论,题目就是实战,这是我们必定要走的路,
关于题目有很多很多呢。比如就堆排序:堆排序的概念;堆排序的算法;来一个叫你选哪种方法合适,他要的就是堆
排序。如果理论没有真正的领会通,是不是来一个不会,来一个可能又不会,其实最最重要的就是搞通明白概念理
论,会思考和联想,做题是一件最简单最简单是事情。
小结:
今天上午最大的收获就是和文彬交流了一下数据结构,从一开的一个Hash、堆排序,
就几乎把《数据结构》《软件工程》《运筹学》《管理经济学》等东西都串了一遍,我
又一次体会到学习的快乐,这样把积累了的进行对比、总结,学到的东西联系起来,建
立起关联来,这样才叫学习,这样的学习才是真正的开心、快乐的!感谢和文彬的交流
和学习!