外存模型-- 外存排序问题(理论)
2023-12-31 04:04:15
归并排序的基本思想
外存排序本质上是一种归并排序,比如说 我们将数组一分为二,然后这两段每一段都是有序的,然后我们把这两段进行合并,这个就是归并排序的思想。
外存排序
但是外存排序并不能一分为二,原因是内存的大小是有限的,内存和外存的交互是以磁盘块为基本单位的,如下图所示,每次内存装满的情况下 可以容纳M/B个磁盘块。放到内存排序以后再往外写。
执行过程:
1. 首先将M的数据放入内存并排序,然后直接写入外存
2. 之后将排号序的数据取每个M的第一块放入内存,这里先放入15 47 23 留一块作为输出缓冲区
3. 重复2过程,那么得到的数据就是有序的。
IO 复杂度分析
- 对于整个数据 扫描的次数是N/B
- 把内存装满的IO次数是M/B
- 首先所有的数据都需要放入内存中洗牌那么次数是N/B
进行的是M/B-1路归并 每次读写数据一次 就是N/B 一共的IO还取决于层数所以是N/B * LOG… 最后把M换成B的原因在下面。
- 第一轮有序序列的最大长度是M/B
- 第二轮有序序列的最大长度是(M/B-1)*M/B
- 以此类推 每一次排序需要读写数据一次
建立右边图片的等式 解出归并次数,那么就可以完成整个问题的求解,最后再对结果进行优化。
文章来源:https://blog.csdn.net/qq_62260432/article/details/135310149
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!