Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по информатике. Часть 2.doc
Скачиваний:
53
Добавлен:
27.03.2016
Размер:
10.52 Mб
Скачать

Метод сортировки выбором

Исходный массив длиной N разбивается на две части: итог и остаток. Участок массива, называемый итогом, располагается с начала массива и должен быть упорядоченным, а участок массива, называемый остатком, располагается вплотную за итогом и содержит исходные числа не отсортированной части исходного массива.

Текстуальный алгоритм сортировки выбором.

Шаг 1. Полагается i=0, т.е. считается, что итоговый участок – пуст.

Шаг 2. В остатке массива ищется минимальный элемент и он меняется местом с первым элементом остатка (i-ым элементом массива). После чего значениеi увеличивается на единицу, тем самым расширяя итоговый участок массива ( отсортированную часть исходного массива).

Шаг 3. Если i<N, то повторяетсяШаг 2. В противном случае – конец алгоритма, т.к. итог становится равным всему массиву.

Конец алгоритма.

Схема алгоритма методом сортировки выбора представлена на рис. 1.

Рисунок 1 – Схема алгоритма сортировки методом выбора

Метод сортировки включением

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

Текстуальный алгоритм методом включением.

Шаг 1. Пусть i=1 , т.е. итоговый участок состоит из одного элемента.

Шаг 2. Берется первый элемент остатка и перемещается в отсортированную часть массива так, чтобы итоговый участок остался упорядоченным.

Шаг 3. После того, как первый элемент остатка переместился в итоговый участок, увеличивается на единицу значение переменной i, тем самым увеличивая отсортированную часть массива. Еслиi<N, то управление передается наШаг 2, в противном случае - работа алгоритма завершена.

Конец алгоритма.

Схема алгоритма метода сортировки включением представлена на рис. 3.

Рисунок 3 – Блок-схема алгоритма сортировки прямым включением

Пример использования генератора случайных чисел

При нажатии на кнопку Button1генерируется случайное число и выводится на экран в виде сообщения:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

int a;

Randomize(); //включение генератора случайных чисел

a=5+random(5); //генерация случайного числа а, 5<=a<10

ShowMessag(IntToStr(a)); //вывод значения переменной а

}

Пример заполнения массива и вывода его в ListBox1

void __fastcall TForm1::Button2Click(TObject *Sender)

{

int i; //объявление переменной для цикла

int mas[5000]; //объявление массива

Randomize(); //включение генератора случайных чисел

ListBox1->Clear(); //очистка списка ListBox1

for (i=0;i<5000;i++) //цикл заполнения массива и его вывод в ListBox1

{

mas[i]=random(5000); //заполнение массива случайными числами

ListBox1->Items->Append(IntToStr(mas[i])); /*вывод элементов массива в ListBox1*/

}

}

Измерение времени выполнения алгоритма

В процессе разработки приложения иногда требуется зафиксировать интервалы времени, чтобы узнать, например, сколько времени занимают вычисления в каком-то фрагменте вашей программы. Это можно сделать различными способами. Простейший вариант - зафиксировать функцией Time() время начала и конца выполнения интересующего фрагмента кода:

TDateTime T1, T2; //объявление переменных для моментов времени

AnsiString S; /*объявление строковой перемнной для вывода промежутка времени*/

T1=Time(); //засекаем время начала выполнения алгоритма

//...

//фрагмент программы, время выполнения которого измеряется

//...

T2=Time(); //зесекаем время окончания работы алгоритма

/*находим разницу между временем начала работы алгоритма и временем окончания его работы*/

DateTimeToString(S,"hh:nn:ss:zzz", T2-T1);

Label1->Caption=S; //вывод времени, затраченного на работу алгоритма

Задание.

Написать программу реализующую три метода сортировки массива: сортировку выбором, сортировку пузырьком, сортировку включением.

Предусмотреть время выполнения каждого метода в программе.

Защитить программу.