Archive for Апрель, 2010

Быстрая сортировка большого массива данных

Воскресенье, апреля 18, 2010

В предыдущей статье был рассмотрен способ хранения большого массива данных. Использование стандартного алгоритма сортировки не целесообразно, поскольку для его сложность есть величина O(N^2), где N – количество элементов в сортируемом массиве. Для большого N будет алгоритм сортировки будет работать очень медленно. Дя сортировки больших массивов часто используют различные алгоритмы сортировки временная сложность которых O(N Log2N), эта величина при больших N. Для сравнения при N = 1 000 000 стандартному алгоритму сортировки потребуется не более чем 1012 действий, а для альтернативного алгоритма потребуется не более чем 10^7, поскольку Log2 1000000 приблизительно равен 10. Таким образом, выигрыш во времени очевиден.
Рассмотрим один из алгоритмов, который позволяет быстро отсортировать большой массив данных. (ещё…)

Share

Работа с массивами большой размерности в Delphi

Понедельник, апреля 5, 2010

Часто приходиться иметь дело с массивами, длина которых не поддерживается стандартным array of . Мне приходилось иметь дело с массивом данных содержащих более тридцами миллионов записей, каждая из которых была record агрегирующий  в себе 7 простых типов данных. При этом вы хотите обрадовать массив не простых типов данных Integer  или Double, а массив данных, которые вы объявили при помощи конструкций TMyRecord = Record .. end; или TMyClass = class .. end;.. Ваше Желание может быть объяснено простым желанием работать с удобной структурой данных, а не выделять множество массивов простых типов данных и потом имеь куцу проблем с областью видимости и передачи их как формальных параметров в функции и процедуры. При их размещении в памяти возникает ошибка

—————————

Debugger Exception Notification

—————————

raised exception class ERangeError with message ‘Range check error’.

—————————

Break   Continue   Help  (ещё…)

Share