外部排序总结

题目:文件存储在磁盘上,假设内存容量为m,待排序文件容量为M,M>m

步骤:

1.生成顺串
    每次读入m长度文件内容,使用内部排序,有序后输出到文件,总共生成大约M/m个中转文件
2.归并顺串
    使用M/m路的归并将M/m个文件的内容归并,步骤如下:

     产生M/m+1个缓冲区,M/m个为每个输入文件的缓冲区,一个为输出文件缓冲区,然后M/m路归并(归并过程如图所示)写入输出缓冲区,输出缓冲区满则写文件,输入缓冲区空则再次读入。一般归并不会一次对所有的中转文件归并,而是执行多次k路归并。

分析:k路归并,每次需要比较遍历k个数选择出最小的值复杂度为O(n)


生成顺串的优化
    使用选择置换算法生成顺串可以在有限的内存下生成大概两倍于内存的顺串,因此会产生更少的待归并中转文件。

选择置换算法:

        假设:内存容量为m,待排序文件容量为M,从小到大排序
  (1)从输入文件读取容量m的内容将可用内存填满  
  &#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值