Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <time.h>
- using namespace std;
- int p = 50000;
- //сортировка методом простого обмена
- void exchange(int* mas, int n)
- {
- unsigned long int M = 0, C = 0;
- bool ssign = 1; int pass = 0;
- while (ssign)
- {
- ssign = false;
- pass++;
- for (int a = 0; a < n - pass; a++) {
- C++;
- if (mas[a] > mas[a + 1])
- {
- swap(mas[a], mas[a + 1]);
- M++;
- ssign=true;
- }
- }
- }
- if (n != 10) cout << "C = " << C << " M = " << M << "\n";
- }
- //обратная сортировка
- void invertSort(int* mas, int n)
- {
- int max_idx;
- for (int i = 0; i < n - 1; i++)
- {
- max_idx = i;
- for (int j = i + 1; j < n; j++)
- {
- if (mas[j] > mas[max_idx])
- {
- max_idx = j;
- }
- }
- swap(mas[max_idx], mas[i]);
- }
- }
- //тестовый прогон программы
- void testProg() {
- int* mas = new int[10];
- cout << "Практическая работа №1 Сравнение простых алгоритмов сортировки массивов. Нестягин Никита. ИКБО-14-19\n";
- cout << "Заполните тестовый массив:\n";
- for (int i = 0; i < 10; i++)cin >> mas[i];
- cout << "Введённый массив:\n";
- for (int i = 0; i < 10; i++)cout << mas[i] << " ";
- cout << "\n";
- exchange(mas, 10);
- cout << "Результат сортировки:\n";
- for (int i = 0; i < 10; i++)cout << mas[i] << " ";
- cout << "\n";
- delete[]mas;
- }
- //Расчет для среднего случая
- void average(int* a, int k) {
- cout << "-------------------------\nn =" << p << "\nСредний случай\n";
- exchange(a, k);
- p = p + 10000;
- }
- //Расчет для наилучшего случая
- void best(int* a, int k) {
- cout << "Наилучший случай\n";
- exchange(a, k);
- }
- //Расчет для наихудшего случая
- void bad(int* a, int k) {
- cout << "Наихудший случай\n";
- invertSort(a, k);
- exchange(a, k);
- }
- //Заполнение массивов с помощью псевдослучайной генерации чисел
- void random() {
- for (int i = 50000; i <= 90000; i=i+10000)
- {
- int* mas = new int[i];
- for (int j = 0; j < i; j++) {
- mas[j] = rand();
- }
- average(mas, i);
- best(mas, i);
- bad(mas, i);
- delete[] mas;
- }
- }
- int main()
- {
- setlocale(0, "rus");
- srand(time(0));
- testProg();
- random();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement