Оценка временной эффективности алгоритма сортировки Шелла - C#

Узнай цену своей работы

Формулировка задачи:

Разработать программу оценки временной эффективности алгоритма, провести исследование зависимости времени выполнения алгоритма от размерности массива данных. Требования к программе: • определение исходных массивов данных для сортировки; • сортировка и измерение количества сравнений, перестановок, времени сортировки; вывод оценок эффективности сортировки. Возможно кому-то встречалось подобное, если да,то напишите где это найти...заранее спасибо.)

Решение задачи: «Оценка временной эффективности алгоритма сортировки Шелла»

textual
Листинг программы
using System;
 
class Program
{
    static void Main()
    {
        Console.Write("Введите размер массива: ");
        int size = int.Parse(Console.ReadLine());
        int[] array = new int[size];
        Random random = new Random();
        int i;
        Console.WriteLine("Исходный массив");
        for (i = 0; i < size; i++)
        {
            array[i] = random.Next(0, 50);
            Console.Write(array[i] + " ");
        }
        Console.WriteLine();
        int Count = 0;
        int Replaces = 0;
        int Time = 0;
        Massiv(ref array, ref Time, ref Replaces, ref Count);
        Console.WriteLine("Отсортированный массив.");
        for (i = 0; i < size; i++)
        {
            Console.Write(array[i] + " ");
        }
        Console.WriteLine("\nВремя сортировки: " + Time + " мс.");
        Console.WriteLine("Количество перестановок: " + Replaces);
        Console.WriteLine("Количество сравнений: " + Count);
        
        Console.ReadKey(true);
    }
 
    public static void Massiv(ref int[] mas, ref int time, ref int replaces, ref int count)
    {
        int a, j, buf;
        int start = System.Environment.TickCount;
        for (a = 0; a < mas.Length-1; a++)
        {
            for (j = a+1; j < mas.Length; j++)
            {
                if (mas[a] > mas[j])
                {
                    replaces++;
                    buf = mas[a];
                    mas[a] = mas[j];
                    mas[j] = buf;
                }
                count++;
            }
        }
        time = System.Environment.TickCount - start;
    }
}

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


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

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

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