zoukankan      html  css  js  c++  java
  • 置换—选择排序

    置换——选择排序

    土办法构造初始归并段

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

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

    。。。

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

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

    知识回顾

  • 相关阅读:
    内排序小结
    HTML初体验
    android动画介绍之 自己定义Animation动画实现qq抖一抖效果
    iOS 把数据库文件打包到mainbundle中,查找不到路径的解决的方法;以及在删除bundle中文件的可行性
    随着ScrollView的滑动,渐渐的运行动画View
    MFC Month Calendar Control 控件使用
    Codeforces Round #148 (Div. 1)
    Codeforces 486E LIS of Sequence(线段树+LIS)
    2014年百度之星资格赛第四题Labyrinth
    UVA10519
  • 原文地址:https://www.cnblogs.com/jev-0987/p/13322225.html
Copyright © 2011-2022 走看看