rendered paste bodypublic class Heapsort
{
public static void sort(double[] a)
{
double temp;
int n = a.length;
for(int i = n/2; i >= 1; i--)
reHeapDown(a, i, n);
while(n > 1)
{
temp = a[0]; a[0] = a[n-1]; a[n-1] = temp;
n--;
reHeapDown(a, 1, n);
}
}
private static void reHeapDown(double[] a, int i, int n)
{
double root = a[i-1];
int parent = i-1, child = 2*i;
while(child <= n)
{
if(child < n && a[child+1] < a[child])
child++;
if(a[child-1] < root)
break;
a[parent-1] = a[child-1];
a[parent] = a[child];
a[child] = a[2*parent];
}
a[parent-1] = root;
}
}