![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Имеется большой массив. Его необходимо БЫСТРО сортировать, для этого хочу использовать БД. Подскажите какую, при условии, что программу пишу на D6, дома и на работе. Таскаю ее туда-сюда.
|
|
#2
|
||||
|
||||
|
Конечно же Оракл
![]() Массив-то на сколько большой? |
|
#3
|
|||
|
|||
|
Зачем же, коллега, так людей пугать
? У новичков, которые не работали с СУБД, а тем более с Oracle может нервный срыв приключится .Есть же Firebird Embedded, который вообще не требует никакой установки. Распаковал несколько файлов и работай. Да и полный FB устанавливается за 1 минуту. Как раз для начинающих. А на Оракл они перейдут обязательно, только потом, когда будут делать базу для General Motors. |
|
#4
|
|||
|
|||
|
Если задача стоит ТОЛЬКО в сортировке большого массива, то, имхо, тянуть для этого БД особого смысла нет, достаточно просто реализовать любой быстрый алгоритм сортировки
|
|
#5
|
||||
|
||||
|
смотря на сколько большой масив ... может для этого хватит самой простенькой локальной СУБД
сколько записей, приблизительно, нужно обработать ? |
|
#6
|
|||
|
|||
|
массив примерно 10000-20000 записей. В принципе сделал сортировку методом Шелла. Скорость вполне устраивает. Если можно, напишите по подробнее про FireBird. Как-то пытался с ней работать, но ни чего не вышло
![]() |
|
#7
|
|||
|
|||
|
Цитата:
|
|
#8
|
||||
|
||||
|
Для такого кол-ва записей вполне хватит и старого Парадокса.
А чем тебя обычный фильтр не устраивает ??? |
|
#9
|
|||
|
|||
|
Цитата:
Код:
procedure quicksort(var a: list; Lo,Hi: integer);
procedure sort(l,r: integer);
var
i,j,x,y: integer;
begin
i:=l; j:=r; x:=a[random(r-l+1)+l]; { x := a[(r+l) div 2]; - для выбора среднего элемента }
repeat
while a[i]<x do i:=i+1; { a[i] > x - сортировка по убыванию}
while x<a[j] do j:=j-1; { x > a[j] - сортировка по убыванию}
if i<=j then
begin
if a[i] > a[j] then {это условие можно убрать} {a[i] < a[j] при сортировке по убыванию}
begin
y:=a[i]; a[i]:=a[j]; a[j]:=y
end;
i:=i+1; j:=j-1
end;
until i>j;
if l<j then sort(l,j);
if i<r then sort(i,r)
end; {sort} |