我的程序中有一个错误,我不知道为什么这个错误出现在63 Line。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace HeapSort
{
class Program
{
void restore(int[] T,int k)
{
int n = T.Length;
int i,j;
i=T[k-1];
while(k<=n/2)
{
j=2*k;
if( (j<n) && (T[j-i] < T[j]) ) j++;
if(i>=T[j-1]) break;
else
{
T[k-1] = T[j-1];
k=j;
}
T[k-1]=i;
}
}
//Sort tab T .
void heapsort(int[] T)
{
int k,swap;
int n = T.Length;
for(k=n/2;k>0;k--) restore(T,k);
do
{
swap=T[0];
T[0]=T[n-1];
T[n-1]=swap;
n--;
restore(T,1);
} while(n>1);
}
static void Main(string[] args)
{
int i;
int[] T = { 12, 3, -12, 9, 34, 23, 1, 81, 45, 17, 9, 23, 11, 4 };
for(i = 0;i <T.Length;i++)
Console.Write(" {0}",T[i]);
Console.WriteLine();
heapsort(T); //THE ERROR
for (i = 0; i < T.Length; i++)
Console.Write(" {0} ", T[i]);
}
}
}
答案 0 :(得分:2)
如果您指定哪个错误(有时会有帮助)会很好。我在这里看到的一件事是你从静态方法Main调用非静态代码(heapsort)。如果你真的想要或者更好 - 你的2个方法是静态的,你应该创建一个Program对象。这是首发。