У меня есть алгоритм heapsort.Подсчет сравнений в Heapsort с использованием C#
private int heapSize;
private void BuildHeap(int[] arr)
{
heapSize = arr.Length - 1;
for (int i = heapSize/2; i >= 0; i--)
{
Heapify(arr, i);
}
}
private void Swap(int[] arr, int x, int y)//function to swap elements
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
private void Heapify(int[] arr, int index)
{
int left = 2 * index + 1;
int right = 2 * index + 2;
int largest = index;
if (left <= heapSize && arr[left] > arr[index])
{
largest = left;
}
if (right <= heapSize && arr[right] > arr[largest])
{
largest = right;
}
if (largest != index)
{
Swap(arr, index, largest);
Heapify(arr, largest);
}
}
public int PerformHeapSortTest(int[] arr)
{
int counter = 0;
BuildHeap(arr);
for (int i = arr.Length - 1; i >= 0; i--)
{
Swap(arr, 0, i);
heapSize--;
Heapify(arr, 0);
}
DisplayArray(arr);
}
Private void DisplayArray(int[] arr)
{
for (int i = 0; i < arr.Length; i++)
{Console.Write("{0}\n", arr[i])}
}
Я хочу, чтобы сосчитать сравнения и не понимаю, как это реализовать с помощью этой кучи алгоритма сортировки, который находится в отдельном классе, который я называю от основных. Я посмотрел в Интернете и ничего не нашел. Может ли кто-нибудь показать мне, как реализовать сравнения с этим алгоритмом?
спасибо, я посмотрю на это – Sup