• 置换—选择排序


    置换——选择排序

    土办法构造初始归并段

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

    由于内部排序的内存工作区只能容纳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

    。。。

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

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

    知识回顾

  • 相关阅读:
    阿里Java完整学习资料
    Android 矢量图详解
    关于 Android 状态栏的适配总结
    SSM框架视频资料
    hideSoftInputFromWindow
    微信支付
    git+coding.net记录篇
    ClassNotFoundException超限
    react native初步常见问题
    React Native windows搭建记录
  • 原文地址:https://www.cnblogs.com/jev-0987/p/13322225.html
Copyright © 2020-2023  润新知