Основы языка C# 2005. Евсеева О.Н - 95 стр.

UptoLike

Составители: 

99
времен и дает оценку времени работы функций. Обе функции вычисляют
факториал числа 15.
Проводить сравнение эффективности работы различных вариантовэто
частый прием, используемый при разработке программ. Встроенный тип
DateTime обеспечивает необходимую поддержку для получения текущего
времени. Он совершенно необходим, когда приходится работать с датами.
Статический метод Now класса DateTime возвращает объект этого класса,
соответствующий дате и времени в момент создания объекта. Многочисленные
свойства этого объекта позволяют извлечь требуемые характеристики.
Приведем текст функции getTimeInMilliseconds:
private long getTimeInMilliseconds()
{
DateTime time = DateTime.Now;
return (((time.Hour*60 + time.Minute)*60 + time.Second)*1000 + time.Millisecond);
}
Результаты измерений времени работы рекурсивного и циклического
вариантов функций слегка отличаются от запуска к запуску, но порядок
остается одним и тем же. Эти результаты показаны на рис. 22.
Рисунок 22. Сравнение времени работы циклической и рекурсивной
функций
Вовсе не обязательно, что рекурсивные методы будут работать медленнее
нерекурсивных. Классическим примером являются методы сортировки.
Известно, что время работы нерекурсивной пузырьковой сортировки имеет
порядок c*n2, где c – некоторая константа. Для рекурсивной процедуры
сортировки слиянием время работы – q*n*log(n), где q – константа. Понятно,
что для больших n сортировка слиянием работает быстрее, независимо от
соотношения значений констант. Сортировка слияниемхороший пример
применения рекурсивных методов. Она демонстрирует известный прием, суть
которого в том, что исходная задача разбивается на подзадачи меньшей
размерности, допускающие решение тем же алгоритмом. Решения отдельных
подзадач затем объединяются, давая решение исходной задачи. В задаче
сортировки исходный массив размерности n можно разбить на два массива
размерности n/2, для каждого из которых рекурсивно вызывается метод
сортировки слиянием. Полученные отсортированные массивы сливаются в
единый массив с сохранением упорядоченности.