C#heapSort,1错误

时间:2010-10-16 12:16:12

标签: c# heapsort

我的程序中有一个错误,我不知道为什么这个错误出现在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]);
        }


        }
    }

1 个答案:

答案 0 :(得分:2)

如果您指定哪个错误(有时会有帮助)会很好。我在这里看到的一件事是你从静态方法Main调用非静态代码(heapsort)。如果你真的想要或者更好 - 你的2个方法是静态的,你应该创建一个Program对象。这是首发。