Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2011, 15:51   #11
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

или же эти элементы очень массивны сами по себе - и массив из них слишком большой по весу и работать с ним не удобно.... - я так понимаю.
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 09.05.2011, 17:10   #12
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
по-идее таблица применяется, в случае если сами элементы не сильно упорядочены или каждый из них избыточен...
Что вы имеете ввиду под таблицей? Для множества не определен порядок элементов, множество либо содержит элемент, либо не содержит.
Цитата:
или же эти элементы очень массивны сами по себе - и массив из них слишком большой по весу и работать с ним не удобно.... - я так понимаю.
Любой объект имеет некоторое представление в памяти и хранить ссылка на объекты в массиве или списке - разница не сильно велика. Про то, что неудобно работать - это да, нужно пересоздавать массив.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 09.05.2011, 17:21   #13
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

таблица - в смысле - хэш-таблица )
Цитата:
Хеш-таблица - это обычный массив с необычной адресацией, задаваемой хеш-функцией.
Хеширование полезно, когда широкий диапазон возможных значений должен быть сохранен в малом объеме памяти, и нужен способ быстрого, практически произвольного доступа
- видимо, я не совсем понимаю назначение хэш-таблицы...то есть я понимаю только - что это упрощенное представление каких-то исходных данных в виде их идентификаторов - для ускоренного поиска - то есть формирование индекса...
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 09.05.2011, 17:49   #14
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

получается, что перед тем как разместить некий элемент в массиве, например, необходимо получить его индекс с помощью GetHashCode - изменить размерность массива, и только потом уже поместить на полученное место элемент....во как...я прав?
против абортов=за + жизнь;.фкн вгу;_______________________мойблг

Последний раз редактировалось vedro-compota; 09.05.2011 в 17:56.
vedro-compota вне форума Ответить с цитированием
Старый 09.05.2011, 18:17   #15
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
- видимо, я не совсем понимаю назначение хэш-таблицы...то есть я понимаю только - что это упрощенное представление каких-то исходных данных в виде их идентификаторов - для ускоренного поиска - то есть формирование индекса...
Смысл в том, что благодаря хешу - быстро выполняются операции добавления/поиска/удаления элементов.

Цитата:
получается, что перед тем как разместить некий элемент в массиве, например, необходимо получить его индекс с помощью GetHashCode - изменить размерность массива, и только потом уже поместить на полученное место элемент....во как...я прав?
С увеличением массива - аккуратнее, GetHashCode() возврашает значение типа int,
сами понимаете сколько получается допустимых значений хеша.
Здесь варианты:
1. Для массива: есть массив длинны n, получаем значение хеша, делием его нацело на n получаем индекс i, смотрим, если в массиве в позиции i есть элемент, значит такой уже существует.

2. Можно сделать список структур (значение хеша, ссылка на объект).
Если держать список отсортированным, по поиск осуществляется довольно быстро.
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 09.05.2011, 18:56   #16
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

Цитата:
2. Можно сделать список структур (значение хеша, ссылка на объект).
Если держать список отсортированным, по поиск осуществляется довольно быстро.
хорошее замечание! в целом - это ведь тоже самое , что и поиск по массиву, да? (в том смысле, что массив это тоже последовательность индекс(~хэш)=значение- то есть там хэш - это индекс))
против абортов=за + жизнь;.фкн вгу;_______________________мойблг

Последний раз редактировалось vedro-compota; 09.05.2011 в 19:08.
vedro-compota вне форума Ответить с цитированием
Старый 09.05.2011, 19:31   #17
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
хорошее замечание! в целом - это ведь тоже самое , что и поиск по массиву, да? (в том смысле, что массив это тоже последовательность индекс(~хэш)=значение- то есть там хэш - это индекс))
Способ на основе списка позволяет представить разреженный массив.
Допустим хеши двух элементов равны 1500 и 2000 - чтобы не заводить массив размером в 2000 элементов, можно сделать на основе списка:
Список структур (значение хеша, ссылка на объект)
список будет содержать два элемента:
1. (1500, ссылка на объект 1)
2. (2000, ссылка на объект 2)

Или на основе массивов:
будет массив соответствий (значение хеша, индекс в массиве данных)
из двух элементов
1. (1500, 1)
2. (2000, 2)
и массив данных из двух элементов:
1. (ссылка на на объект 1)
2. (ссылка на на объект 2)
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 09.05.2011, 22:54   #18
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

Daramant , спасибо за эти два варианта.
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пример Хеширования gs.Soroka Помощь студентам 0 04.04.2011 23:25
MD5 хеширования ZET78 Общие вопросы C/C++ 2 06.07.2010 23:33
Добавление слов в таблицу методом хеширования Marsel737 Общие вопросы Delphi 0 28.02.2010 18:14
С++ .алгоритм хеширования SHA1 Tigra1900 Помощь студентам 0 01.06.2009 17:07
По поводу алгоритма хеширования md5 Jugger Помощь студентам 2 03.09.2008 22:57