/* The Great Win32 Language Shootout http://dada.perl.it/shootout/
contributed by Isaac Gouy (Nice novice)
Transliterated from the Java implementation
To compile:
nicec --sourcepath=.. -d=. -a heapsort.jar heapsort
To run:
java -jar heapsort.jar 80000
*/
import random; // reuse gen_random & floatFormat & toSingleInt
void main(String[] args){
let n = toSingleInt(args);
let numbers = new double[n+1];
for (var i = 1; i <= n; i++) numbers[i] = gen_random(1);
heapsort(n, numbers);
println(floatFormat(10).format(numbers[n]));
}
void heapsort(int n, double[] ra) {
int l, j, ir, i;
double rra;
if (n < 2) return;
l = (n >> 1) + 1;
ir = n;
for (;;) {
if (l > 1) rra = ra[--l];
else {
rra = ra[ir];
ra[ir] = ra[1];
if (--ir == 1) {
ra[1] = rra;
return;
}
}
i = l;
j = l << 1;
while (j <= ir) {
if (j < ir && ra[j] < ra[j+1]) { ++j; }
if (rra < ra[j]) {
ra[i] = ra[j];
j += (i = j);
}
else j = ir + 1;
}
ra[i] = rra;
}
}