Как написать счётчик для подсчёта количества перестановок и сравнений в программе сортировки на C#?
using System;
class quicker
{
static void Swap(ref int x, ref int y)
{
var t = x;
x = y;
y = t;
}
static int Section(int[] mas, int minIndex, int maxIndex)
{
var pivot = mas[maxIndex];
var j = minIndex;
var d = 0;
for ( var i = minIndex; i < maxIndex - 1; i++)
{
if ( mas[i] <= pivot)
{
Swap(ref mas[j], ref mas[i]);
j = j + 1;
d++;
}
Console.WriteLine(d);
}
Swap(ref mas[j], ref mas[maxIndex]);
return j;
}
static int[] QuickSort(int[] array, int minIndex, int maxIndex)
{
if (minIndex >= maxIndex)
{
return array;
}
var pivotIndex = Section(array, minIndex, maxIndex);
QuickSort(array, minIndex, pivotIndex - 1);
QuickSort(array, pivotIndex + 1, maxIndex);
return array;
}
static int[] QuickSort(int[] array)
{
return QuickSort(array, 0, array.Length - 1);
}
static int[] RandomArray(int length, int minValue, int maxValue)
{
var r = new Random();
var outputArray = new int[length];
for (var i = 0; i < outputArray.Length; i++)
{
outputArray[i] = r.Next(minValue, maxValue);
}
return outputArray;
}
static void Main(string[] args)
{
var massiv = RandomArray(25, 0, 100);
Console.WriteLine("Входные данные: {0}", string.Join(", ", massiv));
Console.WriteLine("Отсортированный массив: {0}", string.Join(", ", QuickSort(massiv)));
Console.ReadLine();
}
}
Ответы (1 шт):
Автор решения: KuzCode
→ Ссылка
using System;
class quicker
{
public int SwapCount { get; private set; } = 0
static void Swap(ref int x, ref int y)
{
var t = x;
x = y;
y = t;
SwapCount++;
}
// ...
}