Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursach_var_46.doc
Скачиваний:
10
Добавлен:
18.11.2018
Размер:
922.62 Кб
Скачать

2.2 Выходные данные

Выходные данные формируются на основе записей памяти программы, вычисляемого поля result и выводятся на экран в виде таблицы (см. рис.1)

Имя переменной

Назначение

Тип

Ограничения

result

Информация о результате тестирования

int

0\1

Таблица 2- Вычисляемое поле записи массива данных программы

3. Методы решения задач

3.1 Понятие сортировки

Сортировка представляет собой процесс упорядочения множества подобных информационных объектов в порядке возрастания или убывания их значений. Например, список i из n элементов будет отсортирован в порядке возрастания значений элементов, если   i <= i  <= ...  <= i

Имеется два вида алгоритмов сортировки: сортировка массивов, которые могут находиться как в оперативной памяти, так и на диске  в  виде файла прямого доступа,  и сортировка последовательных файлов,  находящихся на дисках или магнитных лентах. Основное отличие между сортировкой  массивов  и  сортировкой последовательных  файлов  заключается  в том,  что каждый элемент массива является доступным в любое время. Это значит, что в любое время  любой  элемент  массива  может сравниваться с любым другим элементом массива и любые два элемента массива могут обмениваться местами.  Напротив, в последовательном файле в каждый момент времени доступен лишь один элемент. Из-за этих отличий методы сортировки существенно отличаются для этих двух видов сортировки.

В общем случае при сортировке данных только часть информации используется в качестве ключа сортировки,  который используется в сравнениях.  Когда выполняется обмен,  передается  вся  структура данных.  Например, в списке почтовых отправлений в качестве ключа сортировки может использоваться почтовый индекс,  а  в  операциях обмена  к  почтовому индексу добавляются полное имя и адрес. 

3.2. Обменная сортировка

Рассмотрим обменный (пузырьковый) метод сортировки: пусть задан список целых чисел (простейший случай) В=< K1, K2,..., Kn >. Требуется переставить элементы списка В так, чтобы получить упорядоченный список B'=< K'1, K'2,...,K'n >, в котором для любого 1<=i<=n элемент K'(i) <= K'(i+1). При обменной сортировке упорядоченный список В' получается из В систематическим обменом пары рядом стоящих элементов, не отвечающих требуемому порядку, пока такие пары существуют. Наиболее простой метод систематического обмена соседних элементов с неправильным порядком при просмотре всего списка слева на право .

B=<20,-5,10,8,7>, исходный список;

B1=<-5,10,8,7,20>, первый просмотр;

B2=<-5,8,7,10,20>, второй просмотр;

B3=<-5,7,8,10,20>, третий просмотр.

Нижеприведенная функция bubble производит сортировку входного массива методом обмена (см. Листинг 1) .

/* сортировка обменным методом */

float * bubble(float * a, int m, int n)

{

char is=1;

int i;

float c;

while(is)

{ is=0;

for (i=m+1; i<=n; i++)

if ( a[i] < a[i-1] )

{ c=a[i];

a[i]=a[i-1];

a[i-1]=c;

is=1;

}

}

return(a);

}

Листинг 1 - Обменная сортировка

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]