Алгоритмы сортировки данных
Download 188,3 Kb.
|
bexaNigga
- Bu sahifa navigatsiya:
- include include include using namespace std; struct Mushroom { string name;
ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ ИМЕНИ МУХАММАДА АЛЬ-ХОРЕЗМИЙ ФАКУЛЬТЕТ: ЭЛЕКТРОННЫЙ БИЗНЕС Практическое задание №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 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 2025
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling