Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.26;
Скачать: CL | DM;

Вниз

индексированный доступ к массиву   Найти похожие ветки 

 
SergP ©   (2006-02-11 18:06) [0]

Имеется MyArray:array of record ...
нужен индексированный (по какому-нить полю записи) доступ к этому массиву.
Так как я не нашел пока инфы как такое реализовать, то делаю так:
Создаю "индексный массив": array of integer длиной такой же как и "индексируемый". присваиваю каждому элементу значение его индекса:
for i:=0 to high(indexarray) do indexarray[i]:=i;
Затем сортирую его quicksort"ом, где при сортировке идет сравнение по
нужному полю из записи индексируемого массива.
(  MyArray[indexarray[i]].MyField   )
После чего могу обращаться к моему массиву таким образом  MyArray[indexarray[i]]  , и соответственно могу также производить бинарный поиск по полям, для которых построены индексы.
Добавление элементов в массив произвожу так:
Бинарным поиском по индексируемому полю нахожу место куда его вставлять, увеличиваю размеры обоих массивов, добавляю мою запись в конец MyArray, сдвигаю часть indexarray на один элемент (4 байта) начиная от найденного места, и в это место вставляю значение high(myarray).

Не знаю насколько хорош этот способ. Поэтому вопрос:
Есть ли какие-то другие способы получше для индексированного доступа к массиву? И есть ли способы где можно было бы не создавать дополнительный массив, а добавить для индексирования еще одно (или несколько) поле в запись?


 
Bogdan1024 ©   (2006-02-11 21:56) [1]

бинарным деревом.


 
SergP ©   (2006-02-11 22:47) [2]


> Bogdan1024 ©   (11.02.06 21:56) [1]
> бинарным деревом.


Ну и...
Поконкретнее можно?



Страницы: 1 вся ветка

Текущий архив: 2006.02.26;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.027 c
6-1131535027
Святослав
2005-11-09 14:17
2006.02.26
Нахождение в сети Интернет "Родственных" приложений !!!


1-1137080441
sally
2006-01-12 18:40
2006.02.26
Многопоточность в DLL, отрисовка в приложении


15-1138800360
Ega23
2006-02-01 16:26
2006.02.26
Вопрос к москвичам


4-1133374095
dimka_sh
2005-11-30 21:08
2006.02.26
Окно на несколько секунд


1-1138109505
dan317
2006-01-24 16:31
2006.02.26
TDBGridEh, переменная высота строк - возможно ?