|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.05.2013, 09:19 | #11 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
попытаюсь пояснить, почему. на самом деле, можно (и несложно) удалять элементы и из динамического массива. Но, давайте разберём, как будет происходить удаление. Допустим есть массив A из N элементов. Пусть N равен 5: A[0] = 11 A[1] = 77 A[2] = 35 A[3] = 44 A[4] = 88 допустим, Вы ходите удалить i-й элемент массива ( пусть i=2, удаляем A[2] ). тогда Вам нужно в цикле от i и до конца списка (N-1) переписать на место элемента следующий за ним элемент. т.е. на место A[2] переписать A[3], на место A[3] переписать A[4] после чего уменьшить N на единицу (обрезать массив по длине на 1 элемент) а теперь представьте, если у Вас N равна сотням тысяч и Вам нужно удалить несколько десятков элементов вначале, то сколько раз и сколько элементов при этом нужно переписать?! Кстати, если специфика вашей задачи всё позволит Вам подобные излишества (если количество элементов в массиве измеряется десятками или сотнями), тогда, в любом случае, изменение длины массива (SetLength) всё равно желательно выполнять ОДИН раз, после завершения ВСЕХ циклов удалений/копирований, ибо операция SetLength чрезвычайно ресурсозатратная операция... p.s. крик души. впрочем, все доводы про не эффективность алгоритмов и малоэффективные методы (вроде описанного выше удаления из массива) разбиваются о современные процессоры, с их сумасшедшими частотами, ядрами, конвеерами и т.д. и т.п. Уверен, что на современной процессоре даже крайне неэффективные методы (допустим удаление сотни первых записей из массива на 100000 элементов и изменением длины массива в цикле) будут работать так, что пользователь это не заметит (в данном случае - доли секунды)! Но это не означает, что нужно писать плохо и неэффективно!! Последний раз редактировалось Serge_Bliznykov; 14.05.2013 в 09:22. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление одинаковых строк на листе Excel 2003 | vfv | Microsoft Office Excel | 26 | 21.11.2014 12:58 |
удаление строк массива | XaHTeP | Паскаль, Turbo Pascal, PascalABC.NET | 8 | 12.01.2013 20:23 |
Поиск одинаковых строк и изменения и удаление | NightDevil | Microsoft Office Excel | 8 | 14.04.2012 01:45 |
Удаление одинаковых символов из массива | maxflint | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 09.05.2010 13:18 |
удаление одинаковых элементов из массива | sauron99 | Общие вопросы Delphi | 6 | 15.04.2009 21:27 |