|
Внешняя сортировка.Date: 2015-10-07; view: 419.
Внешняя сортировка необходима, когда число сортируемых записей превышает объем основной памяти. Структура данных при данной сортировке должна быть такой, чтобы сравнительно медленные периферийные запоминающие устройства могли справиться с потребностями алгоритма сортировки. По этой причине большинство методов внутренней сортировки бесполезны для внешней сортировки. Основная идея внешней сортировки заключается в том, что мы делим весь сортируемый файл на несколько множеств, затем отдельно осуществляем сортировку каждого из них, сохранив их при этом в отдельных файлах., а затем проводим процедуру слияния этих файлов. Слияние означает объединение двух или более упорядоченных последовательностей в одну упорядоченную последовательность. Слияние использует очень простые СД, которые можно пройти последовательным образом. Такой процесс – внутренняя сортировка с последующим внешним слиянием и является основной идеей алгоритма внешней сортировки. Рассмотрим алгоритм слияния (x, y, z – ключи в файлах): Имеем: x1 £ x2 £ … £ xn (1 файл); y1 £ y2 £ … £ ym (2 файл); z1 £ z2 £ … £ zn+m (3 файл). 1. i=1, j=1, k=1; 2. найти наименьшее; если x i < y j, то идти к п.3 иначе к п.5; 3. вывести x i ; z k x i ; i=i+1; k=k+1; если i £ n, то идти к п.2; 4. вывести y j … y m , т.е. z k … z n+m y j … y m ; конец алгоритма. 5. вывести y j ; z k y j ; k=k+1; j=j+1; если j £ m, то идти к п.2; 6. вывести x i … x n , т.е. z k … z n+m x i … x n ; конец алгоритма.
|