Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Коллекции, эффективное использование, сложность до log(n) 
:(
    Опции темы
kven
Дата 5.12.2007, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 5.12.2007

Репутация: 1
Всего: 1



У меня такой вопрос. 
Как с помощью коллекций списков реализовать такой список что бы операции добавления элемента, удаления и поиска не превышали сложность log(n).
Я начал использовать коллекцию ArrayList, но удаление у меня вызывает большие сомнения, так как  в случае удаления например первого элемента должна как я понимаю переписать все индексы, а это O(n) шагов. Помогите срочно нужно. Спасибо заранее.
PM MAIL   Вверх
Veitmen
Дата 5.12.2007, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 10.11.2006
Где: СПБ

Репутация: 3
Всего: 4



А List не удовлетворяет? Там все операции есть и индексы меняются там автоматом, но опять таки они там меняются так как ты написал. Иначе я думаю не получится.
PM MAIL ICQ   Вверх
mihryak
Дата 5.12.2007, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



посмотри на Dictionary, Remove и Contains по O(1), Add тоже O(1), пока capacity не превышена, иначе - O(n)

Добавлено через 4 минуты и 6 секунд
не заметил твой ответ на свой почти такой же ответ в соседней теме =)
PM MAIL ICQ   Вверх
kven
Дата 5.12.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 5.12.2007

Репутация: 1
Всего: 1



Ещё вопрос есть ли тип который будет реализовывать просто список. Что бы удаление элементов с начала или с конца занимала только 1 операцию, я в принципе придумал выход что для list можно организовывать удаление за O(1), но удалять просто с конца списка, с последнего элемента тогда индексы сдвигать не прийдётся. Вроде бы вариант не плохой, но как бы реализовать удаления из середины списка за O(1) так как сложность то суммироваться будет и через поиск.
Кстати только придумал идея насчёт удаления если переопределять список заново в новый не добавляя старые элементы, по идее максимум O(n) вместе с поиском. выбрать достаточно трудно так как реализую алгоритм со сложностью O(n log(n)). 

И реализация дерева есть ли она, или как реализовать? всё таки дерево двоичное даёт логарифм 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0424 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.