2012-04-10 29 views
7

Sự khác nhau giữa phân loại bên ngoài và sắp xếp nội bộ là gì? Tôi không thấy làm thế nào thời tiết dữ liệu đầu vào có thể được lưu trữ trong bộ nhớ RAM hoặc không phải làm với các thuật toán.Sự khác nhau giữa phân loại bên ngoài và sắp xếp nội bộ là gì?

+1

http://en.wikipedia.org/wiki/External_sorting –

+1

http://en.wikipedia.org/wiki/Internal_sort –

+2

Nếu bạn không thể thấy sự khác biệt trong phân loại bộ nhớ hoặc bộ nhớ ngoài bộ nhớ khiến bạn không nghĩ đủ về vấn đề này. Tôi đề nghị bạn viết chương trình để làm cả hai. Đầu tiên, sắp xếp danh sách các số nguyên có độ dài 100; tiếp theo sắp xếp một danh sách các số nguyên chạy đến, nói, 4TB. –

Trả lời

9

Trong sắp xếp nội bộ, tất cả dữ liệu cần sắp xếp được lưu trữ trong bộ nhớ mọi lúc trong khi sắp xếp đang diễn ra. Trong dữ liệu phân loại bên ngoài được lưu trữ bên ngoài bộ nhớ (như trên đĩa) và chỉ được nạp vào bộ nhớ trong các khối nhỏ. Sắp xếp bên ngoài thường được áp dụng trong trường hợp dữ liệu không thể khớp hoàn toàn với bộ nhớ.

Vì vậy, trong sắp xếp nội bộ, bạn có thể làm điều gì đó như sắp xếp vỏ - chỉ cần truy cập bất kỳ phần tử mảng nào bạn muốn bất cứ lúc nào bạn muốn. Bạn không thể làm điều đó trong phân loại bên ngoài - mảng không hoàn toàn trong bộ nhớ, vì vậy bạn không thể truy cập ngẫu nhiên bất kỳ phần tử nào trong bộ nhớ và truy cập ngẫu nhiên vào đĩa thường rất chậm. Thuật toán phân loại bên ngoài phải xử lý việc tải và dỡ khối dữ liệu theo cách tối ưu.

+0

bộ nhớ ngoài - bạn nhận được các phần dữ liệu cùng một lúc? – committedandroider

+0

@committedandroider: Có, bởi vì bạn không thể phù hợp với tất cả dữ liệu vào bộ nhớ có sẵn. – sharptooth

Các vấn đề liên quan