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

Bicdibus

Участник
Регистрация
5 Мар 2010
Сообщения
497
Реакции
7
Есть массив состоящий из примерно 100к елементов типа стринг прога в рандомном порядке берет из него елементы, поле того как елемент считан его надо удалить, так чтоб пи повторной выборке он не попал в переменную. Можно зделать перебором массива но он большого обьема и будет тормозить сильно. Может есть какие функции для этого, гугление не помогло.
 

starwanderer

Хранитель порядка
Команда форума
Модератор
Регистрация
20 Ноя 2016
Сообщения
1.594
Реакции
3.340
Если это практическая задача, и нужно получить случайную выборку из массива без его сохранения, то , как вариант, задачу проще решить алгоритмически. После выборки элемента, менять его значение на значение последнего элемента массива. После чего уменьшать диапазон генерации индекса случайного элемента на единицу.
Фактически , после каждой итерации размер массива уменьшается на один элемент.
Если в задаче не выставлено других условий, то это самое оптимальное по скорости обработки решение.
 
Последнее редактирование:

bugmenot123

Писатель
Регистрация
16 Мар 2017
Сообщения
7
Реакции
2
  • Заблокирован
  • #3
You should use HashTable instead of Array.
HashTable is perfect for accessing elements without traversing the elements , the performance is 0(1)
 

Deni7ST

Писатель
Регистрация
25 Ноя 2016
Сообщения
2
Реакции
0
При такой постановке задачи другого решения нет.
 

Цуиьфыеук

Создатель
Регистрация
15 Янв 2018
Сообщения
36
Реакции
19
Еще можно попробовать собрать случайный набор ключей без повтора: с числами работа пойдет быстрее чем со строками. А потом сделать выбор значений по ключам.
 
Сверху