Алгоритмы сортировки данных


Download 188.3 Kb.
Sana06.11.2023
Hajmi188.3 Kb.
#1751026
Bog'liq
bexaNigga


ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
ИМЕНИ МУХАММАДА АЛЬ-ХОРЕЗМИЙ
ФАКУЛЬТЕТ: ЭЛЕКТРОННЫЙ БИЗНЕС

Практическое задание №2


На тему: Алгоритмы сортировки данных
Вариант – 4

Выполнил: Шоахроров Бехруз Шоакмалевич


Группа: 123-22(201-2)
Проверил(а): Tashpo’latova Nodira

ТАШКЕНТ-2023




Цель работы: Закрепление знаний по теоретическим основам прямых методов сортировки данных, приобретение навыков реализации алгоритмов для структур согласно синтаксису языка C++

Задание – (1 – 3): Дана структура. Считать данные структур с файлов. Сортировать данные методом прямого включения, прямого выбора, прямого обмена. Вывести на экран показатели эффективности (количество сравнений и замен).


#include
#include
#include

using namespace std;

struct Mushroom {
string name;
string species;
string color;
int size;
};

void fun(int sravnenie, int zameni) {
cout << "Количество сравнений: " << sravnenie << endl;
cout << "Количество замен: " << zameni << endl;
}

int main() {
setlocale(LC_ALL, "rus");

int n;
cout << "Введите количество грибов: ";
cin >> n;

vector mushrooms(n);

for (int i = 0; i < n; ++i) {
cout << "Гриб #" << (i + 1) << ":" << endl;
cout << "Название: ";
cin >> mushrooms[i].name;
cout << "Вид: ";
cin >> mushrooms[i].species;
cout << "Цвет: ";
cin >> mushrooms[i].color;
cout << "Размер: ";
cin >> mushrooms[i].size;
}

int sravnenie = 0;
int zameni = 0;
bool swapped;
//сортировка методом прямого включения
for (int i = 1; i < n; ++i) {
Mushroom key = mushrooms[i];
int j = i;
while (j > 0 && mushrooms[j - 1].size > key.size) {
mushrooms[j] = mushrooms[j - 1];
--j;
sravnenie++;
zameni++;
}
mushrooms[j] = key;
zameni++;
}
//сортировка методом прямого выбора
for (int i = 0; i < n - 1; ++i) {
int min_idx = i;
for (int j = i + 1; j < n; ++j) {
sravnenie++;
if (mushrooms[j].size < mushrooms[min_idx].size) {
min_idx = j;
}
}
swap(mushrooms[i], mushrooms[min_idx]);
zameni++;
}
//сортировка методом прямого обмена
for (int i = 0; i < n - 1; ++i) {
swapped = false;
for (int j = 0; j < n - i - 1; ++j) {
sravnenie++;
if (mushrooms[j].size > mushrooms[j + 1].size) {
swap(mushrooms[j], mushrooms[j + 1]);
zameni++;
swapped = true;
}
}
if (!swapped) {
break;
}
}

cout << "Отсортированные грибы по размеру:" << endl;
for (int i = 0; i < n; ++i) {
cout << mushrooms[i].name << ", " << mushrooms[i].species << ", " << mushrooms[i].color << ", " << mushrooms[i].size << " см" << endl;
}
fun(sravnenie, zameni);

return 0;
}

Download 188.3 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling