Разработка программы для сравнительного анализа методов сортировки - C (СИ)
Формулировка задачи:
Помогите пожалуйста...!
Разработка программы для сравнительного анализа методов сортировки одномерных массивов: деления и сортировки квадратичным выбором.
вот метод деления
#include "stdafx.h" #include "targetver.h" #include <iostream> #include <cstdlib> #include <stdio.h> #include <tchar.h> #include <conio.h> #include <time.h> #define n 10 int main() { setlocale(LC_ALL, "Russian"); int i = 0, a = 0, b = 0, k = 0; int nums[n]; srand(time(NULL)); for (i = 0; i < n; i++) { nums[i] = 0 + rand() % 11; printf("%2d ", nums[i]); } printf("\n"); // сортировка int countswap = 0; //счетчик обменов int countcompare = 0; //счетчик сравнений for (i = 0; i < n; ++i) { int temp = nums[i]; //текущая позиция int left = 0; //левый край int right = i; //правый край while (left<right) //пока левый край меньше правого { int middle = (left + right) / 2; //находим середину МЕТОДОМ РАДЕЛЕНИЯ if (temp >= nums[middle]) //если элемент больше середины { left = middle + 1; //левый край правее середины } else right = middle; //иначе правый край равен середине countcompare++; } int j; for (j = i; j > left; --j) { int k; k = nums[j - 1]; nums[j - 1] = nums[j]; //обмен nums[j] = k; countswap++; } } printf("\n"); printf("Количество сравнений: %d\n", countcompare); printf("Количество обменов: %d\n", countswap); //------------------------------------ printf("Отсортированный: \n"); for (i = 0; i < n; i++) printf("%2d ", nums[i]); getch(); }
Решение задачи: «Разработка программы для сравнительного анализа методов сортировки»
textual
Листинг программы
#include "stdafx.h" #include "targetver.h" #include <iostream> #include <cstdlib> #include <stdio.h> #include <tchar.h> #include <conio.h> #include <time.h> int main() { setlocale(LC_ALL, "Russian"); int i = 0, a = 0, b = 0, k = 0, n; printf("Enter n\n"); scanf("%d", &n); int nums[100]; srand(time(NULL)); for (i = 0; i < n; i++) { nums[i] = 0 + rand() % 11; printf("%2d ", nums[i]); } printf("\n"); // сортировка int cs1 = 0; //счетчик обменов int t1=time(NULL); for (i = 0; i < n; ++i) { int temp = nums[i]; //текущая позиция int left = 0; //левый край int right = i; //правый край while (left<right) //пока левый край меньше правого { int middle = (left + right) / 2; //находим середину МЕТОДОМ РАДЕЛЕНИЯ if (temp >= nums[middle]) //если элемент больше середины { left = middle + 1; //левый край правее середины } else right = middle; //иначе правый край равен середине } int j; for (j = i; j > left; --j) { int k; k = nums[j - 1]; nums[j - 1] = nums[j]; //обмен nums[j] = k; cs1++; } } t1=time(NULL)-t1; printf("\n"); printf("Отсортированный: \n"); for (i = 0; i < n; i++) printf("%2d ", nums[i]); int n=5; int a[100]; int r, cs2=0; for (int i = 0; i < n; i++) { nums[i] = 0 + rand() % 11; printf("%2d ", nums[i]); } int t2=time(NULL); for (int i = 0; i < n; i++) { int m = i; for (int j = i + 1; j < n; j++) { if (a[j] < a[m]) m = j; } r=a[i]; a[i]=a[m]; a[m]=r; cs2++; // swap(a[i], a[m]); } t2=time(NULL)-t2; for (int i = 0; i < n; i++) { printf("%d ",a[i]); } printf("time is %d %d\n", t1, t2); printf("swap is %d %d\n", cs1, cs2); getch(); }
Объяснение кода листинга программы
Код представлен на языке C. Он реализует алгоритм сортировки пузырьком и сортировку слиянием. Список действий:
- Ввод количества элементов для сортировки (n).
- Генерация случайных чисел для массива nums[].
- Сортировка массива nums[] методом сортировки пузырьком.
- Вывод отсортированного массива nums[].
- Вычисление времени выполнения сортировки пузырьком.
- Сортировка массива nums[] методом сортировки слиянием.
- Вывод отсортированного массива nums[].
- Вычисление времени выполнения сортировки слиянием.
- Вывод времени выполнения и количества обменов для каждого метода.
- Ввод количества элементов для сортировки (n).
- Генерация случайных чисел для массива a[].
- Сортировка массива a[] методом сортировки пузырьком.
- Вывод отсортированного массива a[].
- Вычисление времени выполнения сортировки пузырьком.
- Сортировка массива a[] методом сортировки слиянием.
- Вывод отсортированного массива a[].
- Вычисление времени выполнения сортировки слиянием.
- Вывод времени выполнения и количества обменов для каждого метода.
- Ввод количества элементов для сортировки (n).
- Генерация случайных чисел для массива nums[].
- Сортировка массива nums[] методом сортировки вставками.
- Вывод отсортированного массива nums[].
- Вычисление времени выполнения сортировки вставками.
- Вывод времени выполнения и количества обменов для каждого метода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д