00:00
那下边的话呢,我们就重点的来讲的是数组了,数组呢,这也确实是咱们的一个重点啊好,首先呢,我们提到关于这个数组的一些相关的知识,打开咱们这个点Java这样的一个包啊,那关于数组呢,大家首先呢,需要清楚这样的四个情况,把这几个呢,我们拿过来CTRLC一下。那这个呢,就放在这儿了。字呢,稍微小一点。那这个大家注意,就是我们这个EDI瑞呢,有时候你粘过来以后呢,他有时候会少字哈,但是咱也不可能现在一个个去对看哪个少字,那这个大家有时候你要看这个复习笔记的时候,稍微注意一下就行啊,这个粘的时候呢,这是它的一个软件的bug啊,会少字,嗯,但整体上一般没事啊,嗯,首先呢,提到这个数组,这个呢,概念不需要大家去背过啊,你就能够理解就行,多个相同数据类型的数据,按照一定顺序呢排列的一个集合啊,使用一个统一的名去命名啊,并通过编号的方式呢去调这个数据,你看呢,当我们讲完数独以后,大家呢,你回回过来呢,再看这个概念,你会更清楚一些。
01:09
啊,因为说的每一个事儿呢,你都知道它具体是什么意思了啊,是这种啊,那简单来讲啊,说数组数组啊,你就可以理解为那叫数的组合啊,树的组合,那既然提到组合了,他就不是一个人了啊,大家听那个唱歌的,那些跳舞的,你说什么什么组合是吧,他组合他至少得是俩人。啊,那都得以俩人的这种方式来出现啊,那最近比较惨的呢,就是羽泉了是吧?啊,一个人突然出事以后呢,那个就出不来了,组合嘛,那一个人出来那就不能叫组合了是吧?嗯,你看这个俩人的这种比较痛苦,三个人呢,你少一个也差点意思,你看那个韩国就比较特别是吧,韩国一整组合呢,好几十个人丢个谁你都不知道谁丢了是吧?啊这就稳妥多了啊嗯,组合就是数的组合,这个数的话呢,哎,咱们也别理解成就是简单的基本数据,就是简单的这个这个整形数了啊这个数的话呢,你理解成叫数据啊,数据的组合,那数据的话呢,你可以是基本数据类型,也可以是引用数据类型,对,就这样可以了啊,诶一组合那不止一个了,然后我们用一个名名一个名呢,给它去命名啊,这就我们所谓的叫数组名,对,所以其实挺简单的啊,那么相关概念的话呢,我们都在用啊,就不用多说了,这样几个概念你。
02:31
谁知道我们一说数组名,一说元素,你得知道在说谁啊,然后呢,下一个关于数组的特点,这个大家要关注,实际上这个数组是我们数据结构当中最基本的一种结构啊,这个顺带呢,给大家稍微这个说一下,这个所谓的叫数据结构啊,一说呢,好像说数据结构很高大,高大上一样哈。哎,这个数据结构大家呢,很多学理科的同学呢,在大学都学过,可能是一门选修啊,也可能是一门必修,那数据结构呢,实际上它就解决两类问题。
03:06
啊,就是就两类问题,你看这两类问题你是不是清楚啊,第一类它研究的呢,叫数据跟数据之间的逻辑关系。逻辑关系,什么逻辑关系呢?这里边就提到了有很多的这种关系了啊,比如说最薄的这种关系叫集合的关系啊,另外呢,有这个叫一对一的关系,一对多的关系,还有多对多的关系,这呢叫数据跟数据之间的逻辑关系啊,最薄的这种叫集合啊,那最薄怎么叫最薄呢?就比如说你在路上呢,你看到一个美女是吧,你说这时候你跟他有什么关系呢?没有关系系,你说没有关系是吧,你非要说有点关系,那就是恰好在某年某月某日某时某分某秒的时候呢,你俩同时出现在这个位置上了,画一个圈,你俩属于一个集合,就这种关系非常薄是吧,你跟他之间没有这种肢体上的等各种的接触是吧?很薄的一种关系啊,就是我们所谓的叫集合关系啊,就像大家比如说刚来的时候呢,这个其实每个人可能彼此都不认识,非要说有什么关系呢?就是大家也是个集合关系,我们通过这个教室一画一个圈,大家都属于这个集合的元素,哎,这个集合呢,就像大家高中一开始学的那个集合一样,就是很很弱的一种关系,那后来大家慢慢都熟了,彼此之间啊,成了这种男女朋友或者男男朋友了,这种关系就很强是吧,这就另外一种关系就是一对一的关系了啊,有的这个魅力比较大,一对多了是吧?啊这个一对一呢,就是像咱们这个数组当中的啊,数组里边咱们前边有一个元素,你后边是不是紧接着。
04:46
出一个元素,前面对着后边,前面对着后边,或者这个你要感觉比较弱的话呢,呃,这个从从这个列表的角度更容易说啊,列表的话呢,比如第一个元素,然后有第二个元素,有第三个元素,这就是一个对一个,一个对一个是这样的啊啊一对多的话呢,啊,那就是像典型的这个,大家如果接触过,就是这种树形结构呗,哎,你这一个呢,就对了两,你要一个对了三呢,就三叉树啊对两个就二叉树。
05:13
那就这意思啊,多对多多对的话呢,就是这是一个你你能往外延伸,别人是不是也能对过来你啊这种,哎,这个典型的呢,场景就是咱们的这种社交网络。啊,每个人都作为网络当中的一个节点,然后呢,你可以延伸出很多你的好友,然后别人呢,也有很多呃的好友是你,就你可以发散出去,然后别人呢,也可以发散到你这块,呃,一个社交网络呢,大家如果去看它其实就是一个这种多对多的一种关系,非常复杂啊。那这个其实很多的这个厂商,其实都是想获取大家这种多对多的社交网络的这个层次啊,我看有很多这个我的微信的一些好友,就是时不时的突然整一条信息过来验证一下是不是他的好友还是吧,那很多人大家也发过这个东西啊,其实这个呢,其实也是一个挺危险的事儿啊,基本上你这样一发,你相当于就把你的这个你的好友这个关系呢,直接呢就发到他的后台里了。
06:11
啊,当然现在咱们这个都说中国人,其实也不管中国人,全世界的都一样啊,大家呢,一方面注重隐私,但另外一方面呢,你的隐私其实都在对外暴露,呃,你像咱们下载软件的时候,不知道大家有没有注意,不管你是安卓也好,还是iOS系统也好,你会发现呢,他都会去有一个权限,叫做获取你的联系人信息的一个权限。其实有很多软件根本用不到你的联系人。啊,当然他为什么还要拿到你这个权限呢?对,那就他通过联网的方式把你手机联系人呢,就都给上传到他的服务器里了,然后呢,呃,当然了,说的比较好一点呢,就他可以分析你的好友关系啊,比如说大家如果全中国人都把这个信息都上传到某一个应用软件的一个这个后台服务器了,他通过这个大数据的方式给他一搭建,每个人之间是什么关系都可能以都可以分析出来,甚至呢,分析再细一点,你们彼此几个人之间是什么关系,是这种亲属关系,还是属于这种朋友关系,包括你们交流的这个频繁与否,又分成这种强关系和弱关系啊,那这个就非常的清晰了啊,你跟那个人认不认识,他都能够通过这种大数据的方式知道。
07:17
啊,比如说你,你要你是一个逃犯,那好了,找不着你了,找找你这些熟人,那就能够找到你是吧?哎,他有很多种这个方式可以去用的哈,这呢我们感觉还是比较好的啊,那现在呢,肯定不至于说大家把所有的信息都上传到某一个应用的服务器上了,可能是不同的应用,那有一些应用的话呢,就把你的这个个人信息就给卖掉了,所以说大家现在你会发现你的手机的这个短信就变成一个垃圾的一个应用了,是吧,可能你并没有用过这个软件,但是呢,可能你的好友呢,用过他用过了,他获取了那个,他呢同意了那个应用的那个叫读取联系人的那个权限了,然后那个呢,服务器开始给你发短信啊,就出现这种情况了啊。啊,这是属于这个多对多的,还有一种多利多呢,就是我们平时用的这个地图啊,地图的每每一个位置呢,都可以看成个节点,你想去哪儿啊,你可以去很多地方啊,这是发散出去的,然后也可以有很多地方呢,都到你这个位置上,就是一个多对多的关系啊,那数据结构呢,其实它解决的第一个问题,或者研究的一个问题就是这些数据之间到底是什么样的关系,我们理出来呢,应该具有这样的几种关系,好,那第二问题就是数据呢,它的一个存储结构。
08:33
就是数据之间间关系,我们知道了以后,那我们需要把这个数据呢,在内存层面,或者你在这个真正的硬盘存储层面呢,给它存储起来,那我到底该怎么去通过实际的存储结构来刻画它的这样的一些关系啊,这里边呢,就提到这个叫存储结构,那存储结构在书结构当中讲到,呃,有几种呢,其实第一种呢,叫做线性表,简单的给大家说一说啊,就是有的你学过的话呢,复习一下,没学过呢,大概听一听啊,能能三五分钟我就能给你把这个数据结构整体要讲什么说清楚啊,这个线性表呢,其实它主要刻画的就是这种一对一的这种关系了,像这种特别弱的关系,我们就不去再去研究了,是吧?哎,这个线性表主要刻画的就是这种一对一的关系,那线性表呢,又具体分成哪几种呢?具体分成这样几种,第一种呢,叫做顺序表。
09:26
这个顺序表的典型实现就是我们的数组,一说顺序表说的其实就是数组,就是他在内存中是一段连续的空间,这叫顺序表啊,那顺序表之外呢,另外一个呢,叫做链表。也是一对一的电二秒呢,就是它在内存不是连续的了啊,第一个指向下一个,第一个又指向第二个,指向下一个,它在内存空间中,这个可能在这儿,然后它紧接着后边呢,不是这个元素啊,它可能在某一个位置存的这种就做列表啊,那再接着呢,叫做占,咱不是也讲过占了是吧?啊就是内存中的这个栈结构,它也是一个这个线性表啊,那还有一个呢,叫做队列。
10:09
哎,这个站呢,它的一个特点呢,咱们讲这个结构的时候呢,稍微提了一下啊,它呢叫先进后出,对,就是你先进来以后,呃,再进来,再进来,然后这个后进来,这个呢它要先出,那先进来呢,自然而然就后出了,这是站的特点啊,队列呢跟它不一样啊,队列呢它是有两个口了,哎,就是这个口呢是进口,这个口呢叫出口啊,那就意味着呢,谁先进来谁就先出去,这呢就叫做队列,后边呢,我们还要讲一个叫做消息队列,我们也会讲相应的一些框架,就是大家呢同时的去发很多的消息,那么到底这个谁先执行,谁后执行啊,大家排个队列。排完队列以后呢,谁先进来的谁就先执行啊,这就是我们说的这个队列结构啊,好这呢就是说的这种叫呃线性表了,那线性表呢,刻画的是这种一对一的关系啊,那一对多的关系呢,就是我们说的属性结构。
11:09
诶,树性结构呢,主要来刻画的就是一对多的关系,在树形结构里边最典型的或者我们要研究的问题就是二叉树,然后下边又分成很多的树啊,具体我相信就先不展开了啊啊数据结构呢,也有很多的应用场景,比如说后边大家讲数据库的时候那个索引,所以呢,肯定是能够使得我们查询速度更快了,那怎么让它更快呢?我们用这种数形结构来搭建,哎,它用的是这个B数或者B加数啊,能够让它这个检索的速度更快啊,也不管也不管我们讲数据结构了,咱们讲到这个Java基础高级部分的时候呢,要讲一个结构叫做集合,这个集合里边呢,有一个有一个结构呢,叫做tree map,哎tree map的底层存储它也用到数据结构了,哎,它这个存储的这个查询的速度呢,就可以更快。啊,这个大家就先了解一下就可以啊,然后再下边呢,多对多叫图形结构,哎叫图模型,又分成有像图无像图等等等等展开啊行这呢就是大家呢哎,通过这样几分钟的时间,整体上了解一下数结构,它到底要干什么事。
12:15
啊,这有这样的一些问题啊,那基于这样的一些结构呢,下边还有一些所谓的算法问题啊,就是大家通常买一个书的话呢,你会发现它叫数据结构与算法,通常会把这个算法呢,也给大家搭进去了,就是我们单纯的讲这些结构呢,其实没有太大意思哈,就是我们数据结构呢,讲完以后一定要基于这个结构呢,我们要用这些结构是吧,它会有这个算法,那真正的数据结构加算法,这不就是我们所谓的程序吗?啊,那通常你买一本书,它叫数结构与算法,这个书的算法呢,只是我们庞大的算法体系中的一小部分而已,你不要以为呢,说买一本算法书,这本书还挺厚的,讲的挺细的,然后把这个算法讲完了,你以为说自己就算法就搞定了,算法大师了,实际上很浅薄是吧,算法呢,没有边界啊。
13:01
啊,你学比如说区块链能有共识算法相关的很多东西,大家呢,学大数据的啊,还有机器学习相关的很多算法,那现在有人工智能很火,人工智能有很多这个深度学习的相关算法,这多了。啊,这是没有边界的啊,看你具体从事的是什么,你只需要研究跟那个相关的一些算法就行,那么最基本的这个算法啊,就是在数据结构这块提到的主要呢有两类啊,第一类呢,就叫做排序,排序算法啊,第二类呢叫做搜索算法,也叫做检索算法。啊,就是我们能够去从你这个结构当中找到某一个东西,这呢就要搜索,呃,然后还可以给这些数据呢,这不有很多的数据了吗?对这些数据呢,进行个排序,这是呢,应用于数据结构的最简单的两种算法的体现啊,你不要只是因为自己学了一个排序算法,就以为说把所有的算法都学完了,那就跟井底之蛙是一样的是吧?行,那这呢就是把这个数据结构跟算法这个事呢给大家,哎,通过几分钟的时间哈,你有一个宏观的一个认识啊,那我们讲数组这块呢,数组呢就属于它属于这个顺序表了,那我们呢,先把它弄清楚,然后等我们讲到这个张化基础高级的时候呢,还会讲这个叫集合,在集合里边我们就会见到更丰富的结构,比如说链表,哎,这个数据表链表啊,包括这个数据结构这块呢,我们就都可以见到,那在内存当中这个站呢,就满足咱们这里边说的这个站的结构,那队列呢,等大家后边讲到啊,这个我们框架这个比如rabbit MQ啊,还有像这个。
14:35
Salary啊等等,这都属于这个,呃,队列的这样一些框架,到时候呢,会谈这个队列里边的一些细节啊,大家再去关注就行啊好,这呢是我们说的,这叫数组的一个概述。嗯,这个。
我来说两句