Ciao! Ho implementato l'Heapify e il BuildHeap ma non riesco a capire l'errore...me lo segna all'interno del Main() nel buildHeap..sembra dichiarato bene..
codice:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace heapify4
{
class Program
{
public int left(int i)
{
int lx = (2 * i) + 1;
return lx;
}
public int right(int i)
{
int rx = (2 * i) + 2;
return rx;
}
public void Heapify(int[] A, int i)
{
int l = left(i);
int r = right(i);
int largest;
int app=0;
if ((l < A.Length) && (A[l] > A[i]))
largest = l;
else
largest = i;
if ((r < A.Length) && (A[r] > A[i]))
largest = r;
if (largest != i)
{
app = A[i];
A[i] = A[largest];
A[largest] = app;
}
Heapify(A, largest);
}
public void buildHeap(int[] A)
{
int n=(A.Length)-1;
for (int i = n / 2; i >= 0; i--)
Heapify(A , i);
}
static void Main(string[] args)
{
int[] A = new int[] { 7, 14, 3, 5, 13, 4, 44 };
buildHeap(A);
for (int i=0; i<= 7 ;i++)
Console.WriteLine("" +A[i]);
Console.ReadLine();
}
}
}