2012-04-10 194 views
7

外部排序和内部排序有什么区别?我看不出输入数据可以存储在RAM中多少,或者与算法无关。外部分类和内部分类有什么区别?

+1

http://en.wikipedia.org/wiki/External_sorting – 2012-04-10 05:47:59

+1

http://en.wikipedia.org/wiki/Internal_sort – 2012-04-10 05:48:20

+2

如果您看不到内存中或内存不足的排序差异让你对这件事情没有足够的了解。我建议你编写程序来做到这一点。首先,对长度为100的整数列表进行排序;接下来排序一个整数列表,例如4TB。 – 2012-04-10 05:48:44

回答

9

在排序过程中,内部排序所有要排序的数据始终存储在内存中。在外部排序数据存储在内存之外(如在磁盘上),只能以小块加载到内存中。外部排序通常用于数据无法完全适应内存的情况。

因此,在内部排序中,您可以执行类似shell排序的任何操作 - 只需在任何时候访问所需的任何数组元素即可。在外部排序中你不能这么做 - 数组并不完全在内存中,所以你不能随意访问内存中的任何元素并在磁盘上随机访问它通常非常缓慢。外部排序算法必须处理以最佳方式加载和卸载数据块。

+0

外部存储器 - 您可以同时获得部分数据? – committedandroider 2015-02-09 03:49:03

+0

@committedandroider:是的,因为您无法将所有数据放入可用内存。 – sharptooth 2015-02-09 09:24:46

相关问题