Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <locale.h>
- #include <time.h>
- #include <stdlib.h>
- // объявление перестановок и сравнений //
- int swap = 0, comp = 0;
- //вывод массива //
- void dinarr(int n, const int *arr) {
- for (int i = 0; i < n; i++) {
- printf("%d ", *(arr + i));
- }
- }
- // рандом //
- int irandom(int low, int up) {
- int num = (rand() % (up - low + 1)) + low;
- return num;
- }
- // рандом версия 2.0 //
- int iirandom(int *arr, int n, int a, int b) {
- srand(time(0));
- rand();
- for (int i = 0; i < n; i++) {
- arr[i] = irandom(a, b);
- }
- }
- // метод сравненений по возрастанию //
- int irl(int *arr, int n) {
- for (int i = 0; i < n; i++) {
- int minp = i, temp;
- for (int j = i + 1; j < n; j++) {
- if (*(arr + minp) > *(arr + j)) {
- minp = j;
- comp++;
- }
- temp = arr[minp];
- arr[minp] = arr[i];
- arr[i] = temp;
- swap++;
- }
- }
- }
- // метод сравнений по убыванию //
- int irl1(int *arr, int n) {
- for (int i = 0; i < n; i++) {
- int temp, max = i;
- for (int j = i + 1; j < n; j++) {
- if (*(arr + max) < *(arr + j))
- max = j;
- }comp++;
- if (max != i) {
- temp = arr[max];
- arr[max] = arr[i];
- arr[i] = temp;
- swap++;
- }
- }
- }
- // метод пузырек по возрастанию //
- int bubbleirl(int *arr, int n) {
- for (int i = 0; i < n; i++) {
- int temp;
- for (int j = 0; j < n - 1; j++) {
- swap++;
- if (*(arr + j) > *(arr + j + 1)) {
- temp = arr[j];
- comp++;
- arr[j] = arr[j + 1];
- arr[j + 1] = temp;
- }
- }
- }
- }
- // метод пузырек по убыванию //
- int bubbleirl1(int *arr, int n) {
- for (int i = 0; i < n; i++) {
- int temp;
- for (int j = 0; j < n - 1; j++) {
- swap++;
- if (*(arr + j) < *(arr + j + 1)) {
- temp = arr[j];
- comp++;
- arr[j] = arr[j + 1];
- arr[j + 1] = temp;
- }
- }
- }
- }
- // копирование массива //
- int copy(int *arr, int *copyarr, int n) {
- for (int i = 0; i < n; i++) {
- copyarr[i] = arr[i];
- }
- }
- // объявление массивов //
- int *arr1, *arr11, *arr_5_2, *arr_50_2, *arr_500_2, *arr_5, *arr_50, *arr_500, *arrbuble1;
- int number[] = {5, 50, 500};
- int main() {
- setlocale(0, "");
- // выделение памяти через calloc(malloc зло(( ) //
- arr1 = calloc(6, sizeof(int));
- arr11 = calloc(5, sizeof(int));
- arrbuble1 = calloc(5, sizeof(int));
- arr_5 = calloc(5, sizeof(int));
- arr_50 = calloc(50, sizeof(int));
- arr_500 = calloc(500, sizeof(int));
- arr_5_2 = calloc(5, sizeof(int));
- arr_50_2 = calloc(50, sizeof(int));
- arr_500_2 = calloc(500, sizeof(int));
- // рандом массива //
- iirandom(arr1, 5, 1, 10);
- iirandom(arrbuble1, 5, 1, 10);
- iirandom(arr_5, 5, 1, 20);
- iirandom(arr_50, 50, 1, 20);
- iirandom(arr_500, 500, 1, 20);
- copy(arr1, arr11, 5);
- copy(arrbuble1, arr11, 5);
- copy(arr_5, arr_5_2, 5);
- copy(arr_50, arr_50_2, 50);
- copy(arr_500, arr_500_2, 500);
- // Таблица 1 //
- printf("Количество элементов: %d. Заданный массив: ", number[0]);
- dinarr(5, arr1);
- printf(". Сортировка по возрастанию\nМетод Результат Сравнений Перестановок\n");
- irl(arr1, 5);
- printf("сравнений (n) ");
- dinarr(5, arr1);
- printf("%10d%17d\n", comp, swap);
- swap = 0;
- comp = 0;
- irl(arr1, 5);
- printf("сравнений (о) ");
- dinarr(5, arr1);
- printf("%10d%17d\n", comp, swap);
- swap = 0, comp = 0;
- bubbleirl(arrbuble1, 5);
- printf("пузырёк (n) ");
- dinarr(5, arrbuble1);
- printf("%10d%17d\n", comp, swap);
- swap = 0, comp = 0;
- bubbleirl(arrbuble1, 5);
- printf("пузырёк (0) ");
- dinarr(5, arrbuble1);
- printf("%10d%17d\n\n", comp, swap);
- swap = 0, comp = 0;
- // Таблица 2 //
- printf("Количество элементов: %d. Заданный массив: ", number[0]);
- dinarr(5, arr11);
- printf(". Сортировка по убыванию\nМетод Результат Сравнений Перестановок\n");
- irl1(arr11, 5);
- printf("сравнений (n) ");
- dinarr(5, arr11);
- printf("%10d%17d\n", comp, swap);
- swap = 0;
- comp = 0;
- irl1(arr11, 5);
- printf("сравнений (о) ");
- dinarr(5, arr11);
- printf("%10d%17d\n", comp, swap);
- swap = 0, comp = 0;
- bubbleirl1(arrbuble1, 5);
- printf("пузырёк (n) ");
- dinarr(5, arrbuble1);
- printf("%10d%17d\n", comp, swap);
- swap = 0, comp = 0;
- bubbleirl1(arrbuble1, 5);
- printf("пузырёк (0) ");
- dinarr(5, arrbuble1);
- printf("%10d%17d\n\n", comp, swap);
- swap = 0, comp = 0;
- // Таблица 3 //
- printf("Метод: сравнений (n). Сортировка по возрастанию\n");
- printf("N Сравнений Перестановок \n");
- irl(arr_5, 5);
- printf("%d%20d%17d\n", number[0], comp, swap);
- swap = 0, comp = 0;
- irl(arr_50, 50);
- printf("%d%20d%17d\n", number[1], comp, swap);
- swap = 0, comp = 0;
- irl(arr_500, 500);
- printf("%d%20d%17d\n\n", number[2], comp, swap);
- swap = 0, comp = 0;
- // Таблица 4 //
- printf("Метод: пузырёк (n). Сортировка по возрастанию\n");
- printf("N Сравнений Перестановок \n");
- bubbleirl(arr_5_2, 5);
- printf("%d%20d%17d\n", number[0], comp, swap);
- swap = 0, comp = 0;
- bubbleirl(arr_50_2, 50);
- printf("%d%20d%17d\n", number[1], comp, swap);
- swap = 0, comp = 0;
- bubbleirl(arr_500_2, 500);
- printf("%d%20d%17d\n\n", number[2], comp, swap);
- // Освобождение памяти //
- free(arr1);
- free(arr11);
- free(arrbuble1);
- free(arr_5);
- free(arr_50);
- free(arr_500);
- free(arr_5_2);
- free(arr_50_2);
- free(arr_500_2);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment