我写了一个小 C# 命令应用程序。应该使用堆排序算法对四个数组进行排序。我从一个网站上获取了一个算法,它运行得很好。现在我想计算算法对一个数组进行排序所需的键比较。我试图通过 for 循环计算比较,但它似乎是错误的......我必须计算它的任何想法?
这是我的排序算法方法。GlobalVar.CountVal
只是一个public static int
属性。
public static void HeapSort(int[] array, int arr_ubound)
{
int i, j;
int lChild, rChild, pNode, root, temp;
root = (arr_ubound - 1) / 2;
for (j = root; j >= 0; j--)
{
for (i = root; i >= 0; i--)
{
GlobalVar.CountVal += 1;
lChild = (2*i)+1;
rChild = (2*i)+2;
if ((lChild <= arr_ubound) && (rChild <= arr_ubound))
{
if (array[rChild] >= array[lChild])
pNode = rChild;
else
pNode = lChild;
}
else
{
if (rChild > arr_ubound)
pNode = lChild;
else
pNode = rChild;
}
if (array[i] < array[pNode])
{
temp = array[i];
array[i] = array[pNode];
array[pNode] = temp;
}
}
}
temp = array[0];
array[0] = array[arr_ubound];
array[arr_ubound] = temp;
return;
}
这是完整的代码: http: //pastebin.com/4Y0NQECP