- •Лабораторный практикум по информатике
- •Часть 2
- •Содержание
- •Введение
- •Методические рекомендации по подготовке к лабораторным работам
- •Варианты задания
- •Технология выполнения работы
- •Разработка приложения
- •Создание интерфейса приложения
- •Определение функциональности приложения.
- •Конструирование формы
- •Множественный выбор
- •Конструирование формы
- •Варианты заданий
- •Технология выполнения работы
- •Варианты заданий
- •Технология выполнения работы
- •Варианты заданий
- •Варианты заданий
- •Технология выполнения работы
- •Содержание отчета
- •Вопросы для защиты работы
- •Варианты заданий
- •Технология выполнения работы
- •Варианты заданий
- •Технология выполнения работы
- •Перечень обеспечивающих средств
- •Общие теоретические сведения
- •Составление линейных алгоритмов
- •Варианты заданий
- •Технология выполнения работы
- •Содержание отчета
- •Вопросы для защиты работы
- •Цель работы
- •Задачи лабораторной работы
- •Перечень обеспечивающих средств
- •Общие теоретические сведения
- •Варианты заданий
- •Технология выполнения работы
- •Содержание отчета
- •Вопросы для защиты работы
- •Цель работы
- •Задачи лабораторной работы
- •Перечень обеспечивающих средств
- •Общие теоретические сведения
- •Варианты заданий
- •Технология выполнения работы
- •Содержание отчета
- •Вопросы для защиты работы
- •Цель работы
- •Задачи лабораторной работы
- •Перечень обеспечивающих средств
- •Общие теоретические сведения
- •Варианты заданий
- •Технология выполнения работы
- •Содержание отчета
- •Вопросы для защиты работы
- •Цель работы
- •Технология выполнения работы
- •Изучение управляющего элемента CheckBox
- •Изучение управляющего элемента RadioGroup
- •Технология выполнения работы
- •Изучение управляющего элемента ComboBox
- •Технология выполнения работы
- •Вопросы для защиты работы
- •Цель работы
- •Задачи лабораторной работы
- •Перечень обеспечивающих средств
- •Общие теоретические сведения
- •Изучение управляющего элемента StringGrid
- •Технология выполнения работы
- •Вопросы для защиты работы
- •Метод сортировки выбором
- •Метод сортировки включением
- •Пример использования генератора случайных чисел
- •Пример заполнения массива и вывода его в ListBox1
- •Измерение времени выполнения алгоритма
- •Технология выполнения работы
- •Вопросы для защиты работы
- •Поиск элемента массива на основе линейного просмотра
- •Метод двоичного поиска
- •Технология выполнения работы
- •Вопросы для защиты работы
- •Варианты задания
- •Технология выполнения работы
- •Задание
- •Варианты заданий
- •Технология выполнения работы
- •Перечень обеспечивающих средств
- •Общие теоретические сведения
- •Варианты задания
- •Технология выполнения работы
- •Обращение к программе-функции Mathcad
- •Задание
- •Варианты задания
- •Технология выполнения работы
- •Содержание отчета
- •Вопросы для защиты работы
- •Библиографический список
Метод сортировки выбором
Исходный массив длиной 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; //вывод времени, затраченного на работу алгоритма
Задание.
Написать программу реализующую три метода сортировки массива: сортировку выбором, сортировку пузырьком, сортировку включением.
Предусмотреть время выполнения каждого метода в программе.
Защитить программу.