Удаление лемента массива без перебора всего массива делфи

Bicdibus

Участник
Регистрация
5 Мар 2010
Сообщения
497
Реакции
7
Есть массив состоящий из примерно 100к елементов типа стринг прога в рандомном порядке берет из него елементы, поле того как елемент считан его надо удалить, так чтоб пи повторной выборке он не попал в переменную. Можно зделать перебором массива но он большого обьема и будет тормозить сильно. Может есть какие функции для этого, гугление не помогло.
 
Если это практическая задача, и нужно получить случайную выборку из массива без его сохранения, то , как вариант, задачу проще решить алгоритмически. После выборки элемента, менять его значение на значение последнего элемента массива. После чего уменьшать диапазон генерации индекса случайного элемента на единицу.
Фактически , после каждой итерации размер массива уменьшается на один элемент.
Если в задаче не выставлено других условий, то это самое оптимальное по скорости обработки решение.
 
Последнее редактирование:
  • Заблокирован
  • #3
You should use HashTable instead of Array.
HashTable is perfect for accessing elements without traversing the elements , the performance is 0(1)
 
При такой постановке задачи другого решения нет.
 
Еще можно попробовать собрать случайный набор ключей без повтора: с числами работа пойдет быстрее чем со строками. А потом сделать выбор значений по ключам.
 
Назад
Сверху