|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Roman Ilyin 2:5020/400 25 Jan 2002 11:22:39 To : Victor Sotnikov Subject : Сортировка файла, не помещающегося в память -------------------------------------------------------------------------------- Доброе время суток, Victor! Вы писали --> Roman Ilyin 24 января 2002 [21:27:16]: RI>> Либо хэш (если у тебя есть ограничения на кол-во разных чисел), RI>> либо сортировать кусками через него же. RI>> Т.е. помимо кол-ва хранишь еще значения. Когда кол-во разных чисел RI>> превышает размер массива - скидываешь на винт. RI>> Потом - второй проход... VS> Можно поподробнее? Для случая когда числа могут повторяться (в противном случае выкинь Kolvo): Type TMyType=record Value:extended;{значение числа - не знаю какие у тебя числа)} Kolvo:longint; {это кол-во одинаковых чисел с опред. значением (которое содержится в Value)} end;{TMyType} const N=1000; {сортируем не более 1000 "разных" чисел за 1 проход} var arr: array [1..N] of TMyType; up:integer; {кол-во _разных_ чисел занесенных в массив} Есть двумерный массив N x 2 Когда получаем новое число - проверяем есть ли такое значение Value в массиве? Если есть, то увеличиваем кол-во, если нет - добавляем Hовый элемент в массив, увеличиваем up на 1. Когда up=1000 либо когда Arr[].Kolvo > 4000000000 ;) скидываем массив в файлик (сортируя его и записывае нужное кол-во раз каждое число). Потом эти куски будет уже проще отсортировать... А вообще faq по сортировке посмотри - там это все очень хорошо описано. -==================================================- Удачи! Roman Ilyin. [grisper@voronezh.net] --- ifmail v.2.15dev5 * Origin: Информсвязь-Черноземье (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.algorithms/54755d4402fb.html, оценка из 5, голосов 10
|