Разработка программы для сравнительного анализа методов сортировки - 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. Он реализует алгоритм сортировки пузырьком и сортировку слиянием. Список действий:

  1. Ввод количества элементов для сортировки (n).
  2. Генерация случайных чисел для массива nums[].
  3. Сортировка массива nums[] методом сортировки пузырьком.
  4. Вывод отсортированного массива nums[].
  5. Вычисление времени выполнения сортировки пузырьком.
  6. Сортировка массива nums[] методом сортировки слиянием.
  7. Вывод отсортированного массива nums[].
  8. Вычисление времени выполнения сортировки слиянием.
  9. Вывод времени выполнения и количества обменов для каждого метода.
  10. Ввод количества элементов для сортировки (n).
  11. Генерация случайных чисел для массива a[].
  12. Сортировка массива a[] методом сортировки пузырьком.
  13. Вывод отсортированного массива a[].
  14. Вычисление времени выполнения сортировки пузырьком.
  15. Сортировка массива a[] методом сортировки слиянием.
  16. Вывод отсортированного массива a[].
  17. Вычисление времени выполнения сортировки слиянием.
  18. Вывод времени выполнения и количества обменов для каждого метода.
  19. Ввод количества элементов для сортировки (n).
  20. Генерация случайных чисел для массива nums[].
  21. Сортировка массива nums[] методом сортировки вставками.
  22. Вывод отсортированного массива nums[].
  23. Вычисление времени выполнения сортировки вставками.
  24. Вывод времени выполнения и количества обменов для каждого метода.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы