2015-04-06 2 views
0

У меня есть алгоритм 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])} 
    } 

Я хочу, чтобы сосчитать сравнения и не понимаю, как это реализовать с помощью этой кучи алгоритма сортировки, который находится в отдельном классе, который я называю от основных. Я посмотрел в Интернете и ничего не нашел. Может ли кто-нибудь показать мне, как реализовать сравнения с этим алгоритмом?

ответ

1

Вам необходимо реализовать сравнения, используя метод Compare вместо использования операторов. Пожалуйста, см. Полный ответ здесь (ответьте на сообщение): how to count heapsort key comparisons

+0

спасибо, я посмотрю на это – Sup

Смежные вопросы