阿里中间件笔试题---大数据排序

本文详细介绍了如何在内存限制为32MB的情况下,解决10个包含1000万行自然数的大文件排序问题。选择了外部排序结合选择置换算法生成顺串,再利用败者树实现多路归并排序,以此降低磁盘IO次数。虽然多线程排序较为简单但效率较低,因此选择了算法实现,提供了具体的实现说明和源码链接。
摘要由CSDN通过智能技术生成

一,题目概要

题目:有10个文件,每个文件有1000万行,文件内容的每一行为一个自然数;需要,写一个程序,将所有数字排序,分为10个文件输出,如0号文件包含前1000万个数字,1号文件文件包含第1千万-2千万之间的数字,依次类推。

限制:如果使用java-Xmx需要设置为32MB;其它语言也需限制内存为32MB

要求:正确输出 使用多线程加分

编写时长:24 小时。提供可运行的程序,以及实现说明

二,解题思路

提取信息:输10按题目要求的文件,经过排序,输出10个相应样式的文件。其中每个整数按4个字节算,需要内存大小为4*10000000*10=400MB。由于内存限制为32MB,所以要控制IO和内存完成排序

思路一:数据库排序 <

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值