前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >7.7.4 置换选择排序(生成初始归并段)

7.7.4 置换选择排序(生成初始归并段)

作者头像
week
发布于 2018-08-24 09:03:10
发布于 2018-08-24 09:03:10
1.5K0
举报
文章被收录于专栏:用户画像用户画像

7.7.3讨论了如何使用m路归并来减少磁盘访问次数。从第7.7.2的讨论可知,减少初始归并段个数r也可以减少归并趟数S。若总的记录个数为n,每个归并段的长度为L,则归并段的个数m=[n/L]。如果采用前面介绍的内部排序方法,将得到长度相同的初始归并段。因此,必须探索新的算法俩生成初始归并段,这就是本节介绍的置换-选择算法。

设初始待排文件FI,初始归并段文件为FO,内存工作区为WA,内存工作区可容纳W个记录。置换-选择算法的步骤如下:

1)从待排文件FI输入W个记录到工作区WA.

2)从内存工作区WA中选出其中关键字最小的记录,记为MINIMAX.(以后再选出关键字比它大的记录纳入本归并段,比它小的归入下一归并段)

3)将MINIMAX记录输出到FO中去。

4)若FI未读完,则从FI输入下一个记录到WA中。

5)从WA中所有关键字比MINIMAX记录的关键字大的记录中选出最小的关键字记录,作为新的MINIMAX。

6)重复3)~5)直到在WA中选不出新的MINMAX记录为止,由此得到一个初始归并段,输出一个归并段的结束标志到FO中去。

7)重复2)~6)直到WA为空,由此得到全部初始归并段。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年09月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
置换-选择算法
我们都知道,减少初始归并段个数r可以减少归并趟数S。若总的记录个数为n,每个归并段的长度为t,则归并段的个数为r=[n/t]。采用内部排序方法得到的各个初始归并段长度都相同(除最后一段外),它依赖于内部排序时可用内存空间工作区的大小。因此,必须探索新的方法,用来产生更长的初始归并段,这就是引入置换-选择算法的原因。
跋扈洋
2021/09/03
9070
置换-选择算法
11.4 置换-选择排序
3、置换-选择排序(Replacement-Selection Sorting)是在树形选择排序的基础上得来的,它的特点是:在整个排序(得到所有初始归并段)的过程中,选择最小(或最大)关键字和输入、输出交叉或平行进行。
小林C语言
2019/06/11
8420
外部排序快速入门详解:基本原理,败者树,置换-选择排序,最佳归并树
注意:在建立基本的分块之前,外存的每个小分块要先进行内部排序,保证这16个分块内部是有序的。
小徐在进步
2024/10/11
3600
外部排序快速入门详解:基本原理,败者树,置换-选择排序,最佳归并树
# 置换选择排序
# 置换选择排序 置换选择排序是对多路平衡归并排序算法的优化,主要优化的是生成多路归并集合的过程。 # 原理 1. 取无序集合的前n个纪录,n的大小右内存工作区的最大容量决定 2. 取n个纪录中的最小值,写入一个新归并集合中 3. 此时工作取中还剩n-1个元素,取无序集合的下一个元素补齐工作区的元素为n个 4. 从n个纪录中选出比该归并段中最大值大的元素集合中的最小值,写入该归并集合,取无序集合的下一位补充工作取 5. 重复3,4直到n个纪录中找不出满足4条件的纪录 6. 重复2-6,直到所有的无序集合纪录
用户1175783
2019/09/10
6710
11.2 外部排序与选择排序
2、首先,按可用内存大小,将外存上含n个记录的文件分成若干长度为l的子文件或段(segment),依次读入内存并利用有效的内部排序方法对它们进行排序,并将排序后得到到有序子文件重新写入外存,通常称这些有序子文件为归并段或顺串(run)。
小林C语言
2020/12/13
7600
11.2 外部排序与选择排序
算法渣-排序-选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
码农戏码
2021/03/23
7990
排序算法 (十) ---简单选择排序
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
葆宁
2022/01/13
3470
排序算法 (十) ---简单选择排序
数据结构-概述
线性表是具有相同数据类型的n个数据元素的有限序列。 逻辑上,每个元素有且只有一个直接前驱,有且只有一个直接后继(表头表尾元素例外)
千灵域
2022/06/17
1.6K0
数据结构-概述
直接插入排序和直接选择排序
直接插入排序的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的序列中的适当位置,直到全部记录插入完成为止。
创译科技
2019/06/02
3.6K0
简谈选择排序
上篇文章说到了冒泡排序,这篇文章讲解一下选择排序算法。具体内容还是从算法实现思想、时间复杂度、算法稳定性以及算法实现四个方面介绍。 1 算法实现思想 1、n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果; 2、初始状态:无序区为R[1..n],有序区为空; 3、第1趟排序: 在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区; 4、第i趟排序:第i趟排序开
Jacklin
2018/05/15
5860
排序(Sort) 原
排序是计算机程序设计中的一种重要操作。如果数据能够根据某种规则排序,就能大大挺高数据处理的算法效率。
云飞扬
2019/03/12
1K0
排序(Sort)
                                                                            原
Python|选择排序
外排序 :由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;
福贵
2020/02/17
5510
7.7.3 多路平衡归并与败者树
归并趟数S=[logm R](向下取整)。从而增加归并路数m可以减少归并趟数S,进而减少访问外存的次数(I/O次数)。然而,当增加归并路数m时,内部归并时间将增加。做内部归并时,在m个元素中选择关键字最小的记录需要比较m-1次。每趟归并n个元素最多需要作(n-1)*(M-1)次比较,S趟归并总共需要的比较次数为:
week
2018/08/24
1.2K0
【数据结构】七大排序算法
排序的相关概念 排序的分类 根据在排序过程中带排序的记录是否全部被放置在内存中,排序分为: 内排序 外排序 1.内排序 内排序是在排序整个过程中,带排序的所有记录全部放置在内存中。 影响内排序的主要因素: 时间性能。(主要受比较和移动两种操作的影响) 辅助空间。 算法的复杂性。 内排序的分类 根据排序过程中借助的主要操作,内排序分为: 插入排序 交换排序 选择排序 归并排序 2.外排序 外排序是由于排序的记录个数太多,不能同时放置在内存中,整个排序过程需要在内外存之间多次交换数据才能进行。 按照算法的复杂
我就是马云飞
2018/02/05
1.2K0
【数据结构】七大排序算法
选择排序(Selection Sort)
表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。理论上讲,选择排序可能也是平时排序一般人想到的最多的排序方法了吧。
Java架构师必看
2021/07/13
5260
【愚公系列】2021年11月 C#版 数据结构与算法解析(选择排序-简单选择排序)
选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
愚公搬代码
2021/12/03
1670
【愚公系列】2021年11月 C#版 数据结构与算法解析(选择排序-简单选择排序)
外部排序的方法
在实际应用中,由于外存设备的不同,通常又可分配磁盘文件排序和磁带文件排序两大类。磁带排序和磁盘排序的基本步骤相类似,主要的不同之处在于初始归并段在外存介质中的分布方式,磁盘是直接存储设备,磁带是顺序存储设备。下面以磁盘为例进行说明。
week
2018/08/24
1.1K0
【数据结构】排序算法
https://blog.csdn.net/weixin_72357342/article/details/129173919?spm=1001.2014.3001.5502
修修修也
2024/04/01
1240
【数据结构】排序算法
数据结构-常用的排序算法
好久不见哈,我终于又更新了,惊不惊喜,意不意外,哈哈哈哈。等之后会专门写一篇文章给大家汇报汇报我最近在忙什么呢,今天这篇还是接着之前的数据结构系列继续,主要讲讲数据结构里面常用的几种排序算法。
张俊红
2019/01/02
3780
直接选择排序到堆排序做的那些改进
主要推送关于对算法的思考以及应用的消息。坚信学会如何思考一个算法比单纯地掌握100个知识点重要100倍。本着严谨和准确的态度,目标是撰写实用和启发性的文章,欢迎您的关注,让我们一起进步吧。 01 — 你会学到什么? 彻底弄明白常用的排序算法的基本思想,算法的时间和空间复杂度,以及如何选择这些排序算法,确定要解决的问题的最佳排序算法,上个推送总结了冒泡排序和其改进后的快速排序这两个算法,下面总结直接选择排序到堆排序的改进,后面再继续总结插入排序、希尔排序、归并排序和基数排序。 02 — 讨论的问题是什么?
double
2018/04/02
8390
直接选择排序到堆排序做的那些改进
相关推荐
置换-选择算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文