Головна сторінка Випадкова сторінка КАТЕГОРІЇ: АвтомобіліБіологіяБудівництвоВідпочинок і туризмГеографіяДім і садЕкологіяЕкономікаЕлектронікаІноземні мовиІнформатикаІншеІсторіяКультураЛітератураМатематикаМедицинаМеталлургіяМеханікаОсвітаОхорона праціПедагогікаПолітикаПравоПсихологіяРелігіяСоціологіяСпортФізикаФілософіяФінансиХімія |
Хронологія основних подій, що передували утворенню Європейського Союзу та його розширенню--- 4Дата добавления: 2015-04-16; просмотров: 774
Документирование программ в процессе разработки. Состав документации. Документирование программы: Правильно построенный процесс разработки программ позволяет получать документацию параллельно, так что к окончанию отладки получается почти вся необходимая документация. Документация на разработанную программу включает следующие части: 1. Постановка задачи (спецификация задачи: В спецификации различают две существенно разные ее части: функциональную и эксплуатационную спецификацию. Функциональная спецификация описывает объекты, участвующие в задаче, входные и выходные данные, связь между ними, реакции на аномалии, разбиение задачи на подзадачи. Эксплуатационная спецификация содержит требования к скорости работы программы и используемым ресурсам памяти, характеристиками ЭВМ, на которой программа должна работать, специальные требования к надежности и безопасности программы. Очевидно, чем сложнее и больше решаемая задача, тем труднее составить исчерпывающие спецификации. Возможно, что некоторые требования придется уточнить после следующих этапов - проектирования и кодирования); 2. Проект алгоритма и структур данных (на псевдокоде); 3. Текст программы на языке программирования; 4. Отладочные тесты и результаты их работы (по мере тестирования заносятся в документацию); 5. Доказательство корректности (если оно является необходимой фазой отладки); 6. Руководство пользователю программы (на естественном языке). Составляется как правило самом в конце, как итог, основываясь на уже полученной документации. _____________________________________________________________________________________
Классификация алгоритмов внутренней сортировки. Сравнительная оценка методов сортировки. Внутренняя сортировка - ориентирована на сортировку массивов. Разделение на сложные (модифицированные) и простые связано с оценкой эффективности алгоритмов по двум основным параметрам: число сравнений ключей элементов и число перестановок элементов. Для простых методов сортировки эти параметры имеют порядок в среднем n2, а для сложных (модифицированных) - n*logn, где n-количество сортируемых ключей:
1) Простые методы:
1. Метод простого обмена - проверяются пары ключей, и если они не упорядочены, то элементы взаимно меняются местами. Простая обменная сортировка ("метод пузырька") для массива a[1], a[2], ..., a[n] работает следующим образом. Начиная с конца массива сравниваются два соседних элемента (a[n] и a[n-1]). Если выполняется условие a[n-1] > a[n], то значения элементов меняются местами. Процесс продолжается для a[n-1] и a[n-2] и т.д., пока не будет произведено сравнение a[2] и a[1]. Понятно, что после этого на месте a[1] окажется элемент массива с наименьшим значением. На втором шаге процесс повторяется, но последними сравниваются a[3] и a[2]. И так далее. На последнем шаге будут сравниваться только текущие значения a[n] и a[n-1]. Понятна аналогия с пузырьком, поскольку наименьшие элементы (самые "легкие") постепенно "всплывают" к верхней границе массива. Шейкер-сортировка — разновидность пузырьковой сортировки. Отличается тем, что просмотры элементов выполняются один за другим в противоположных направлениях, при этом большие элементы стремятся к концу массива, а маленькие — к началу.
2. Метод простого выбора - происходит выбор элементов в порядке возрастания ключей. Сначала выбирается элемент с наименьшим ключом, затем выбирается элемент с наименьшим ключом из оставшихся и т. д. до тех пор, пока в неотсортированной последовательности не останется ни одного элемента. В результате в отсортированной последовательности элементы распологаются в том порядке, в котором они были выбраны. В этом методах массив также делится на уже отсортированную часть A[1], ..., A[k-1] и не отсортированную A[k], ..., A[n]. Из не отсортированной части на каждом шаге извлекается минимальный элемент. Он будет максимальным элементом отсортированной части, так как все меньшие его элементы извлечены на предыдущих шагах, поэтому извлеченный элемент ставится в конец отсортированной части. В начальный момент при k = 1 отсортированная часть будет пустой.
3. Метод простого включения - элементы неотсортированной последовательности рассматриваются по очереди, и каждый вставляется на соответствующее ему место в отсортированной последовательности. При сортировке исходный массив разбивается на две части: A[1], A[2], ..., A[k-1] - отсортированную часть A[k], ...,A[n] - не отсортированную часть. На k - м шаге элемент A[k] включается в отсортированную часть, на соответствующее место. При этом часть элементов, больших A[k], (если таковые есть) сдвигаются на одну позицию правее, чтобы освободить место для элемента A[k]. Прежде чем производить сдвиг элементов необходимо сохранить значение A[k] во временной переменной B. Так как массив из одного элемента можно считать отсортированным, алгоритм начинается с k=2.
2) Сложные методы:
1. Сортировка Шелла (включение). Метод построен на основе метода вставки с минимизацией промежуточных шагов. Сначала выполняется сортировка элементов, отстоящих друг от друга на три позиции. После этого сортируются элементы, отстоящие друг от друга на две позиции. Наконец выполняется сортировка смежных элементов.
2. Сортировка с разделением (быстрая сортировка). "Быстрая сортировка", хоть и была разработана более 40 лет назад, является наиболее широко применяемым и одним их самых эффективных алгоритмов. Метод основан на подходе "разделяй-и-властвуй". Общая схема такова: 1. из массива выбирается некоторый опорный элемент a[i], 2. запускается процедура разделения массива, которая перемещает все ключи, меньшие, либо равные a[i], влево от него, а все ключи, большие, либо равные a[i] - вправо, 3. теперь массив состоит из двух подмножеств, причем левое меньше, либо равно правого, 4. для обоих подмассивов: если в подмассиве более двух элементов, рекурсивно запускаем для него ту же процедуру. В конце получится полностью отсортированная последовательность.
3. Сортировка Флойда (с помощью дерева). _____________________________________________________________________________________ |