Оценка временной эффективности алгоритма сортировки Шелла - 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;
}
}