Programming Taskbook 0
Download 1.62 Mb. Pdf ko'rish
|
Abramyan-Pascal2016-1
- Bu sahifa navigatsiya:
- Array54 ); // Вариант 4
часть. Таким образом, в этом варианте процедура SetLength вызывается только один раз. Замечание. Можно было бы вообще не вызывать в этой программе процедуру SetLength, но тогда в массиве b останутся «лишние» нулевые элементы, что не позволит использовать для его вывода метод WriteAll (по- скольку этот метод выведет все элементы, в том числе и «лишние»). В этой ситуации можно было бы вывести в качестве размера число m, а для выво- да элементов использовать цикл for. Если же полученный таким способом массив предполагается использовать в других частях программы, то вызов процедуры SetLength существенно упростит его дальнейшее использование, Глава 5. Дополнительные средства обработки массивов 103 поскольку в противном случае значение свойства Length для этого массива не будет соответствовать размеру его «истинного» содержимого. Тестирование нового варианта алгоритма для массивов большого раз- мера дает следующий результат: size = 20000 time = 1 size = 40000 time = 1 size = 80000 time = 1 size = 160000 time = 1 size = 320000 time = 3 size = 640000 time = 6 Мы получили гораздо более эффективный алгоритм. Приведем еще один вариант решения, использующий изученные нами в предыдущей главе запросы. В данном случае достаточно применить за- прос фильтрации Where (см. п. 4.2), отбирающий нужные элементы. Чтобы полученную последовательность можно было сохранить в виде массива (как того требуют условия задачи), достаточно применить к ней экспорти- рующий запрос ToArray, рассмотренный в п. 4.6: Task('Array54'); // Вариант 4 var a := ReadArrInteger; var b := a.Where(e -> not Odd(e)).ToArray; b.WriteAll; Для проверки быстродействия этого варианта в программе замера времени между комментариями «начало алгоритма» и «конец алгоритма» надо поместить единственный оператор: var b := a.Where(e -> not Odd(e)).ToArray; Проверка быстродействия показывает, что оно будет почти таким же, как и у варианта 3 (использующего «счетчик заполненности» m): Download 1.62 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling