各位同学大家好,本节课我们来学习,整本书的最后一部分内容就是有关外部排序的内容,那么之前我们想说过地步排序与外部排序的区别,最主要的区别就是我们排序的这个序列长度的一个区别,因为在内部排序当中,我们可以将整个的排序序列直接一次性的读到内存当中,然后进行那个排序的算法,但是在外部排序当中,我们排序的这样一个文件,这个序列的长度可能会远远的超过我们内存送到存放的长度,所以我们要一部分一部分地从外存读入到内存当中,然后进行排序,那么之前我们讲述过这样外部排序的大致的过程,本节课我们就来学习具体m排序的一个方法,那么其实在考验当中,我们对外部排序的考察是比较浅的,不会考察很深入或者很细节的知识点,只要对外部排序它的一个排序方法以及它的一些时间的性能分析,有一定的认识和理解就可以了介绍。嗯,没有应该是星期五,因为明天肯定不会是我的,只有不特别,那么首先接下来我们介绍在课堂中最重要的,这样的一种对我来讲,我就给他扯了,讲了半个小时了,一个关闭一个PPT的一个词来看那个谁学籍都看了一遍,我讲话你就看着。老老师会给你拖,然后他老师先说了不会的,人太强了,上课先给你睡死了,为适当这样一个。还有等等记录的文件分成若干长度为师大这样一个字文件,什么意思呢?是不是就首先像这个长度非常长的文件,非常若干比较小的这个这样的怎么这样,若干比较长的比较小的这样部分,那么我们根据的是缓冲区的大小,这里的缓冲区是在内存当中的,我们是将外存中的这样一部分文件读入到缓冲区当中,所以我们这样的划分大小一定是根据正确的大小来进行划分的,那么它一定是不超过9%大小的,然后我们要一色读入内存,像这些部分一侧读入和中区读入内存当中,并利用有限的并排算法与我们之前学习过的那些排序算法,对他们进行排序,也就是将这些部分它的内部进行一个内部排序,并将排序后的得到的若干个有序的这样的子文件,当然是在子文件内部是有序的,然后重新写回到本子当中这些。的得到的若干个有序的这样的子文件,当然是在子文现在内部是有序的,然后重新写回到本子当中,通常称这些有序子文件为规定段或者是也称为顺创,这就是第1步,我们先将整个文件划分,然后交给我们找对呃,从。顺创这就是第1步,我们先将转告一下划分,然后就是这样的和城区那么就是把它划分为。对是的第1步就是把它划分为若干长度为h的这样的子文件,然后上述描述的过程是什么意思呢?是不就是第3个将这些部分放入到我们的环路区当中,然后在缓冲区当中进行内部排序啊,我们得到了一个有序的序列,这里的绿色小举行就表示我们家这个无序的进行,怪不得我们先将整个文件划分,然后将每一部分进行排序,据的意思就是这样的,首先我们要万历三大城区,那么威瑟,这个矩形这个方块就是表示着我在内存当中的这样一块缓冲区的大小,然后我们有这样非常长的文件,我们发现它是不是远超过我们,我们区的大小,现在我们就要对它进行外快去掉,第1步就是把它划分为若干长度为h的这样的子文件然后上什么意思呢就是一四。对,是的,这样的一次文件,然后上述描述的过程是什么意思呢?是不是就是一次的将这一部分放入到我们的缓冲区当中,然后在缓冲区当中进行内部排序啊,那么得到了一个有序的序列,这里的绿色小组项目表示我们家这个无序的一部分是文件变成了无序的一部分是文件,然后再写回外存,是不是就可以得到这样若干块有序的增加,一定是在一块内是有序的,那么接下来我们就称这些部分这些我们已经排序好的子文件为规定段好,这就是我们第1步所讲述的内容,然后得到了这些有序的归并到之后,我们接下来应该如何处理呢?是不是就是类似于归并排序的过程啊?我们对这些闺蜜段进行主唱的归并,归并归并相邻的两个闺蜜段是贵宾主见有小到一个文件。将竹炭的归并归并相邻的两个归命段是归并段逐渐由小到大,只是得到一个整个的有序的排好序的文件,那么这里与我们之前讲述过的归并排序,它的一个过程是非常相似的,但是在内部排序当中和外部排序当中他们是有一个比较大的差异的,是什么呢?就是最本质的哪一个差异,就是我们对于放入到内存当中的这一段文件,它可能它的长度会远远大于我们对应内存的长度,也就是说当前规定的两个段落,我们没办法同时的放入到内存当中,进行内部排序的一个规定的算法,但是在慰问排序当中,我们还要实现规定的这样的一个过程,那么我们应该如何实现了呢?接下来我们来回忆一下,我们在规避的算法实现过程当中是不是涉及到两个标记啊初始化为大两个元素然后。捡到钱这两个标记是初始化为的两段落的第1个元素,然后比较两个元素哪个更小或者哪个更大,将它写入到结果的这样一个辅助数据当中,然后我们只要不断地移动标记,然后比较就可以了,那么我发现在归并排序的算法思想当中,是不是不需要知道整个段落整个序列的一个内容啊,我们只需要知道当前的这个标记实现的关键词是什么,然后比较两个标记指向的关键字就可以了,所以说在我们实现的这样一个外快虚的移民过程当中,可以不将所有的规定段当中内容同时的放入到内存当中,那么我们可以一部分一部分的放入,接下来我们就来看这样的过程具体是如何实现的,也就是两个闺蜜段两个远远超过我们内存长度的贵宾,多少是如何进行归并的现在。超过我们内存长度的规定多少是如何进行规定的,现在我们有一个内存空间,那么在归并的过程当中,我们会将它等分为三部分,这三部分分别为两个输入缓冲区,输入缓冲区一和输入缓冲区2。输入缓冲区,输入缓冲区,一到输入缓冲区,2以及第3部分是输出缓冲区,它们是等大的,接下来我们来看一个例子,那么例如我们每一个缓冲区最多只可以放两关键字,接下来我们来看两个闺蜜段,这两个闺蜜段,每一个闺蜜段都有4个黄颜色,当然它没办法同时的放入到n次当中了,所以说我们要实现部分的放入,然后进行一定多长,接下来我们就来看它的过程是如何执行的,首先我们放入第1部分的第1个闺蜜头二丈母娘关键字,一个三上到输入管理区一当中,然后第2部分呢,把关键字放入到输入缓冲区二当中,接着是不是在输入管控区一有一个标记指向了第1个元素,一啊输入缓冲区,二当中有一个标记指向了第1个元素,二我们比较当前两边介质的这个元素它的最小值是多少这是不是就类似于我们的过程。我们比较当前两边介质的这个元素,它的最小值是多少?这是不是就类似于我们的之前讲述的归并排序的过程啊,我们发现一个小,然后要将一添入到输出缓冲区当中,然后移动标记是不是将一的这个标记指向下一个元素3啊,然后继续比较,我们比较3和2哪个更小?是不是二更小,我们将二添入到输出和整序当中发现了此时我们就要交内容然后三是不是。嗯借一个指向输入法中去当中的3,另一个指向第2个归名段的部分当中的4我们接着几项比较三要算小,此时同学们是不是发现了画中区当中内容是不是已经全都比较比较满意了?那么接下来我们就要输入缓冲区一当中的内容清空,并将剩下的部分移到输入缓冲区当中,接着继续进行比较,我们发现下一个元素是四方小,然后死时输出缓冲区也满了,我们将输出缓冲区清空并把它写入到结果段当中,并且输入法和序号是不是也比较完,毕了我们要将输入法输入法清空那么疑似的这样的过程,这样的比较不断的输入,不断的输出,最终就可以得到我们想要的得到的这样一个结果,好,这就是在外国学当中我们规定差也可以实现。我要去趟中国贵宾两个相邻的闺蜜照的方法,即使我们规定的规定多少分比较长,也可以实现规定操作好,接下来就是这样的规定的过程,不断的规避一下两个相邻的规定多少,然后最终可以得到我们想要得到的这样一个有序的序列,他了解了整个归并排序外部排序的一个方法之后,我们来看一下它的一个时间是怎样计算的,他有这样三部分的时间与内部排序是不同的,那么首先第1部分是内部排序所需时间,他表示的是我们出事时是不是要把这个长文件分解成若干个那么这些闺名段,我们需要放到面试当中进行内部排序第一部分的时间就是这些闺蜜装时间然后就是我们在不断的惊喜哦做事。就是这这个啊,就这一整块是是干干嘛的,上面写了吧,定义记录的记录就行,这一个那个定义这个结构,就是这个内存里,它这个结构是什么样的什么样的就有一个关键字,还有一个记录其他的域那就完了,干嘛到到底就相当于比如说你知道硬的行不行啊?对它就相当于定义了另一个结构,就是和in的形成一样的一种。然后第2部分是外存信息读写空间,他表示的就是我们在不断的进行内存外存之间的读写操作时所消耗的读写的时间,这三部分是内部规避的所需时间,就是我们实现两个相连的规模,不一定所消耗的一部分时间,那么这就是我们进行归并排序消耗的更多的就是你这个真的是让大家的意见是的,他的意见是那就是就是我们初试划分的这个测试的,然后每个规模的时间是tshas就是一共的不需要的文件时间测试。因为a表示的是我们进行磁盘这样的io的一个次数,那么接着pl表示的是我们一块一个闺蜜块,它所做的数据或者是回顾这个这个这个时间,接下来就是。那小伙子两个公式叫做t1s它等于r×tx2×tx表示的,就是第1部分时间什么意思呢?R表示我们都是划分到一个规定多少的一个个数,那么每一个柜面多少的那个。那r表示我们初始划分的一个规定段的一个个数,那么每一个规定段总数排的时间是cas ats就是一共的,应该是有所需要的时间,第2部分表示的是关系进行的消时间对这个表示的是我们进行磁盘的io的一个次数,那么接着tl表示的是我们一块一个闺蜜快他所需要的一次毒或者是一次写的时间,接下来就是最后一部分x减1再乘以提着他表示内部微评时间,这个s表示的是会变的趟数,然后每一趟我们都需要比较的前一次,所以说这里我们是s×1-1,为什么是1-14呢?你们最后剩两个元素,是不是剩下的最后一个元素就不需要比较了,那么就是n减一次就是我们照一个记录他取了一个厕所需要。我们对应着一个记录,他取了一个最小关键色所需要的这样的时间,然后我们来看这样的公式,其实在我们考试当中,是不会让大家求的一个具体的数值的,我们拿他只是来理解一下桂云排序它所消耗的时间,这样一个特点,然后我们来举一个例子,比如说现在我们有一个2万的记录的这样一个长度的一个文件,初始的规定段我们给它为三个记录,也就是我们可以把它划分为初始的4个规模二倍,那么首先我们来计算,首先到一部分是每个闺蜜段都要放入到内存当中进行那个排序,那么每个亮白血他所消耗的时间是ts一共有4个出事的对面段,所以是4×1x一部分很好意见,第2部分是3×4+4再乘1o,这里是什么意思呢?我们来看,首先3他表示我们不一样进行读,写的这样一个整个的检测次数,那么第1次是就是。前3的表示对药剂写读写的这样一个城市是那么第1次可能就是一次的,把每个段落放到电视当中的话,然后再想说什么,其实这种城市就是对于一个整个的那种什么怎么什么。
8.7.1外部排序的基本概念 8.7.2外部排序的方法
最新推荐文章于 2022-04-20 22:30:27 发布