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

Вниз

Структура данных, вроде АВЛ-дерева   Найти похожие ветки 

 
partizan   (2006-08-07 19:21) [0]

Есть набор елементов, а каждого елемента есть ранг (некоторое целое число).

Нужна такая структура, которая позволяла бы быстро вычислить порядковый номер определенного ел-та (у ел-та с наибольшим рангом порядковый номер - 1 ), другими словами количество елементов, у которых ранг больше заданного.

Новые елементы добавляются всегда с наибольшим рангом (на 1-е место).
Удаляться может любой елемент.
Так же любой елемент может "поднятся" на 1-е место

Думаю реализовать АВЛ-деревом. Для каждой вершины хранить количество вершин в правом поддереве, тогда количество вершин с рангом больше заданной можно легко посчитать за 1 проход от этой вершины к корню дерева.

Но межет есть идеии, как это реализовать по-проще?


 
Мефисто   (2006-08-07 20:16) [1]

"Фундаментальные алгоритмы и структуры данных в Delphi" Джулиан Бакнелл (один из разработчиов в компании TurboPower).
Исходники к книге не прилагаются, только на сатах издательства. К примру тут:
http://materials.diasoft.kiev.ua/alg_delphi/alg_delphi.zip


 
partizan   (2006-08-07 20:49) [2]

Мне исходники не нужны, мне идея нужна.
Но всеравно спасибо, что хоть кто-то откликнулся


 
Мефисто   (2006-08-07 20:53) [3]

А я тебе на книгу намекнул ;)


 
Alex Konshin ©   (2006-08-08 10:23) [4]

Твоя задача решается с помощью моего юнита Arrays (смюна моем сайте из анкеты).
Достаточно будет просто завести какой-то из TSortedArray. Логический индекс элемента и будет твоим искомым числом.
Насколько это будет эффективно для твоего случая - не знаю, т.к. мало данных о твоей задаче. Работать должно быстро, но возможно, что для твоего конкретного случая можно придумать что-то и по-быстрее.



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

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

Наверх




Память: 0.47 MB
Время: 0.036 c
15-1156233958
tsa
2006-08-22 12:05
2006.09.17
У всех брандмауеры обычные, а этот левый!


4-1147936539
serguar
2006-05-18 11:15
2006.09.17
в каком модуле определена константа GWW_HWNDPARENT


1-1154509872
McSSN
2006-08-02 13:11
2006.09.17
Виртуальный конструктор Create класса TComponent


15-1156933075
Жук
2006-08-30 14:17
2006.09.17
ФАР: Проблемка


6-1146238121
NORDmen
2006-04-28 19:28
2006.09.17
winsock - recv