![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| kven |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 5.12.2007 Репутация: 1 Всего: 1 |
У меня такой вопрос.
Как с помощью коллекций списков реализовать такой список что бы операции добавления элемента, удаления и поиска не превышали сложность log(n). Я начал использовать коллекцию ArrayList, но удаление у меня вызывает большие сомнения, так как в случае удаления например первого элемента должна как я понимаю переписать все индексы, а это O(n) шагов. Помогите срочно нужно. Спасибо заранее. |
|||
|
||||
| Veitmen |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 10.11.2006 Где: СПБ Репутация: 3 Всего: 4 |
А List не удовлетворяет? Там все операции есть и индексы меняются там автоматом, но опять таки они там меняются так как ты написал. Иначе я думаю не получится.
|
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
посмотри на Dictionary, Remove и Contains по O(1), Add тоже O(1), пока capacity не превышена, иначе - O(n)
Добавлено через 4 минуты и 6 секунд не заметил твой ответ на свой почти такой же ответ в соседней теме =) |
|||
|
||||
| kven |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 5.12.2007 Репутация: 1 Всего: 1 |
Ещё вопрос есть ли тип который будет реализовывать просто список. Что бы удаление элементов с начала или с конца занимала только 1 операцию, я в принципе придумал выход что для list можно организовывать удаление за O(1), но удалять просто с конца списка, с последнего элемента тогда индексы сдвигать не прийдётся. Вроде бы вариант не плохой, но как бы реализовать удаления из середины списка за O(1) так как сложность то суммироваться будет и через поиск.
Кстати только придумал идея насчёт удаления если переопределять список заново в новый не добавляя старые элементы, по идее максимум O(n) вместе с поиском. выбрать достаточно трудно так как реализую алгоритм со сложностью O(n log(n)). И реализация дерева есть ли она, или как реализовать? всё таки дерево двоичное даёт логарифм |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |