• 置换—选择排序


    置换——选择排序

    土办法构造初始归并段

    同时最多放两个到输入缓冲区,只能读入两块的内容,然后把这些记录在内存排序之后,在输出写回外存,这样就得到了一个初始归并段。

    由于内部排序的内存工作区只能容纳6个记录(例子)。

    可以用一片更大的内存区域来进行内部排序(如:可容纳18个记录)

    用于内部排序的内存工作区WA可容纳l个记录,这就意味着构造的初始归并段也只能包含l个记录,若文件共有n个记录的话,则初始归并段数量r=n/l

    置换—选择排序

    注:假设用于内部排序的内存工作区只能容纳3个记录

    刚开始会在待排序的文件当中读入3个记录

    我们要构造递增的归并段

    检查内存工作区中的记录,把关键字最小的记录”置换“出去,并且用一个变量MINIMAX把刚才输出的关键字的值给记下来

    现在内存工作区中有一个空位,会在FI读入下一个记录

    再把最小的置换出去,并且用MINIMAX记录。

    读着读着,

    此时,内存工作区当中最小的一个记录是10,但是通过MINIMAX这个变量我们知道,之前输出到归并段1的记录到13了,所以10这个记录我们不能放到归并段1的末尾。

    除了10 就是到14比13大,所以我们可以把14放到归并段1的末尾

    紧接着读入下一个。。

    读到2的时候最小的比MINIMAX小,所以不能放到归并段1的末尾

    所以把30放出到归并段1的末尾。

    在一直放。。

    如果在某一个时刻WA内的关键字都比MINIMAX更小,则该归并段在此截至。

    接下来构造归并段2

    。。。

    接下来构造归并段3

    。。。

    这些初始归并段的长度可以超越内存工作区的大小的限制

    读写磁盘是以磁盘块为单位的。

    知识回顾

  • 相关阅读:
    shell脚本学习001
    Discuz 代码分析 001 forum.php
    Oauth2.0 入门
    第一篇文章
    position的四个属性值: relative ,absolute ,fixed,static
    JQuery中stop([clearQueue],[goToEnd])介绍
    <meta>
    sublime 2中Package control安装和使用
    ios 状态码
    <video>和<audio>标签,对视频和音频的支持
  • 原文地址:https://www.cnblogs.com/jev-0987/p/13322225.html
Copyright © 2020-2023  润新知