writeln("import { Array } from \"lib/Array.cms\";"); writeln(""); writeln("array = new Array();"); for (y = 1; y <= Bottom; y++) { writeln("array.push(\"" + replace([1,y], "\"", "\\\"") + "\");"); } writeln(""); writeln("function find(data, array) {"); writeln(" for (i = 0; i < array.length; i++) {"); writeln(" if (left(data, len(array[i])) == array[i]) {"); writeln(" return i;"); writeln(" }"); writeln(" }"); writeln(" return -1;"); writeln("}"); writeln(""); writeln("function compare(y1, y2, x, array) {"); writeln(" return find([x,y1], array) - find([x,y2], array);"); writeln("}"); writeln(""); writeln("function swapRow(y1, y2, l, r) {"); writeln(" for (x = l; x <= r; x++) { swap([x,y1], [x,y2]); }"); writeln("}"); writeln(""); writeln("function qsort(l, t, r, b, x, a){"); writeln(" y = t + 1;"); writeln(" while (y <= b && compare(y, t, x, a) == 0) { y++; }"); writeln(" if (y > b){ return; }"); writeln(" if (compare(y, t, x, a) > 0) { p = y; } else { p = t; }"); writeln(""); writeln(" y1 = t;"); writeln(" y2 = b;"); writeln(" while (y1 <= y2) {"); writeln(" while (compare(y1, p, x, a) < 0 && y1 <= y2) { y1++; }"); writeln(" while (compare(y2, p, x, a) >= 0 && y1 <= y2) { y2--; }"); writeln(" if (y1 < y2) {"); writeln(" if (p == y1) {"); writeln(" p = y2;"); writeln(" } else if (p == y2) {"); writeln(" p = y1;"); writeln(" }"); writeln(" swapRow(y1, y2, l, r);"); writeln(" }"); writeln(" }"); writeln(" if (t < y2) { qsort(l, t, r, y2, x, a); }"); writeln(" if (y1 < b) { qsort(l, y1, r, b, x, a); }"); writeln("}"); writeln(""); writeln("qsort(1, 1, Right, Bottom, x, array);");