数据量很大的排序问题 大量数据如何排序
来源:互联网 发布:云霄网络 编辑:程序博客网 时间:2024/04/27 10:09
数据量很大的排序问题 大量数据如何排序
【尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/51151674
同学某天参加腾讯面试,技术面的时候,面试官问了排序问题:
问题一:若有1T的数据,需要实现由大到小排序,你用什么办法,说说你的思路和想法?
问题二:有10个G的数据,如果两条数据一样,则表示该两条数据重复了,现在给你512的内存,把这10G中重复次数最高的10条数据取出来。
分析:问题一和问题二思路基本是一样的,对于这种题目,利用常规的排序方法(如插入排序,快速排序……),自然是不能解决问题的!因此数据量太大。注意内部排序和外部排序的区别
排序算法分为内部排序和外部排序:
(1)内部排序:指的是待排序记录存放在计算机随机存储器(内存)中进行的排序过程;我们熟悉常用的冒泡排序,选择排序,插入排序,快速排序,堆排序,归并排序,希尔排序……等都属于内部排序方法;
(1)内部排序:指的是待排序记录存放在计算机随机存储器(内存)中进行的排序过程;我们熟悉常用的冒泡排序,选择排序,插入排序,快速排序,堆排序,归并排序,希尔排序……等都属于内部排序方法;
内部排序算法的比较:
(2)外部排序:指的是待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中需要对外存进行访问的排序过程;
基本思路:外部排序指的是大文件的排序,即待排序的记录存储在外部存储器上,在排序过程中需进行多次的内、外存之间的交换。首先将打文件记录分成若干个子文件,然后读入内存中,并利用内部排序的方法进行排序;然后把排序好的有序子文件(称为:归并段)重新写入外存,再对这些归并段进行逐个归并,直到整个有序文件为止。
例子:假设有10 000个记录的文件需要排序,则先把这10 000个记录文件分成10个归并段(R1…~R10,每段1000个记录),然后逐个读入归并段进行内部排序(共10次),然后把排序好的归并段重新写入外存中,再进行两两归并,直到得到一个有序文件为止。
例子:假设有10 000个记录的文件需要排序,则先把这10 000个记录文件分成10个归并段(R1…~R10,每段1000个记录),然后逐个读入归并段进行内部排序(共10次),然后把排序好的归并段重新写入外存中,再进行两两归并,直到得到一个有序文件为止。
先来看看各位大神对问题解答:http://bbs.csdn.net/topics/390360278?page=1
思路一:
思路二:
依此类推,得出最终结果
来源:http://blog.csdn.net/guyuealian/article/details/51151674
阅读全文
0 0
- 数据量很大的排序问题 大量数据如何排序
- 数据量很大的排序问题 大量数据如何排序
- 数据量很大的排序问题 大量数据如何排序,没有做测试
- 大量数据如何排序
- 对大量的数据进行排序
- 数据库导入数据时,数据量很大导致报错问题
- 对大量数据进行排序
- 如何给10^7个数据量的磁盘文件排序
- 如何给10^7个数据量的磁盘文件排序
- 如何给10^7个数据量的磁盘文件排序
- 如何给10^7个数据量的磁盘文件排序
- 如何给10^7个数据量的磁盘文件排序
- 如何给10^7个数据量的磁盘文件排序
- 如何给大数据量的磁盘文件排序
- 如何给10^7个数据量的磁盘文件排序
- 如何给10^7个数据量的磁盘文件排序
- 如何给10^7个数据量的磁盘文件排序
- 数据排序的问题
- MFC动态库使用boost::thread运行时报错的问题
- redis4.0 搭建及双实例配置
- Android补间动画
- C\C++中 fopen中w w+ wb区别
- bzoj 4999: This Problem Is Too Simple!
- 数据量很大的排序问题 大量数据如何排序
- bzoj 5016: [Snoi2017]一个简单的询问
- OpenCV2编程手册笔记之 4.2计算图像的直方图(彩色)
- Linux时间同步(NTP)
- 前言
- Gradle sync failed: SSL peer shut down incorrectly
- 编程范式七 笔记 泛型栈
- eclipse+maven+ssm框架
- LeetCode | 76. Minimum Window Substring