
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра ЭПУ
отчет
по лабораторной работе №2
по дисциплине «Информационные технологии»
Тема: «Алгоритмы и программы решения задач комбинаторики Алгоритм «шейкерной» сортировки и сортировки выбором»
Студент гр. 1205 |
|
Агеев А.А. |
Преподаватель |
|
Ларионов И. А. |
Санкт-Петербург 2022
Цель работы: изучить принцип работы алгоритмов «шейкерной» сортировки и сортировки выбором, написать программу, выполняющую алгоритм, проверить корректность результатов работы программы.
Блок-схемы:
Рисунок 1 – блок-схема алгоритма «шейкерной» сортировки
Рисунок 2 – блок-схема алгоритма сортировки выбором
Код программы:
1) «Шейкерная» сортировка
#include <iostream>
using namespace std;
int main()
{
const int N = 7;
int M=0;
int a[N];
int left, right, i, tmp;
left = 0;
right= N - 1;
for (int i = 1; i < N; i++)
{
cout << a[i] << " " ;
}
cout<<endl;
while (left <= right)
{
for (i = right; i >= left; i--)
{
if (a[i-1] > a[i])
{
tmp = a[i];
a[i]=a[i-1];
a[i-1]=tmp;
M=M+1;
}
}
left++;
for (i = left; i <= right; i++)
{
if (a[i-1] > a[i])
{
tmp = a[i];
a[i]=a[i-1];
a[i-1]=tmp;
M=M+1;;
}
}
right--;
}
for (int i = 0; i < N-1; i++)
{
cout << a[i] << " " ;
}
cout << endl;
cout << M << endl;
return 0;
}2) Сортировка выбором
#include <iostream>
using namespace std;
int main()
{
const int N = 5;
int M=0;
int a[N];
int min, tmp;
for (int i = 0; i < N; i++)
{
cout << a[i] << " " ;
}
cout<<endl;
for (int i = 0; i < N-1; i++)
{
int min=i;
for (int j=i; j<N; j++)
{
if(a[j]<a[min])
{
min=j;
}
}
if(min!=i)
{
tmp = a[i];
a[i]=a[min];
a[min]=tmp;
M=M+1;
}
}
for (int i = 0; i < N; i++)
{
cout << a[i] << " " ;
}
cout << endl;
cout << M << endl;
return 0;
}
Листинг результатов:
«Шейкерная» сортировка:
Рисунок 3 – результат работы алгоритма «шейкерной» сортировки для случайного массива
Сортировка выбором
Рисунок 4 - результат работы алгоритма сортировки выбором для случайного массива
Выводы: написаны программы, выведены результаты, числа в массивах расставлены в порядке возрастания, выведено количество перестановок.