0
我有一个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 2015-04-06 13:14:36