Witam,
Napisałem algorytm sortowania przez kopcowanie ale po "sortowaniu" jest tylko jeden element w tablicy tzn. 81. Czy ktos wie gdzie może być błąd?
class Heap
{
static void Restore(int[] arr, int k, int n)
{
int i, j;
i = arr[k - 1];
while (k <= n / 2)
{
j = 2 * k;
if ((j < n) && (arr[j - 1] < arr[j]))
j++;
if (i >= arr[j - 1])
break;
else
{
arr[k - 1] = arr[j - 1];
k = j;
}
}
}
static void HeapSort(int[] arr, int n)
{
int k, swap;
for (k = n / 2; k > 0; k--)
Restore(arr, k, n);
do
{
swap = arr[0];
arr[0] = arr[n - 1];
arr[n - 1] = swap;
n--;
Restore(arr, 1, n);
} while (n > 1);
}
static void Main(string[] args)
{
int i = 0;
int [] array = { 12, 3, -12, 3, 34, 23, 1, 81, 45, 17, 9, 23, 11, 4 };
for (; i < 14; i++)
Console.Write(" {0}", array[i]);
HeapSort(array, 14);
Console.WriteLine();
for (i = 0; i < 14; i++)
Console.Write(" {0}", array[i]);
Console.Read();
}
}