/* 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; } }