list = "\\n"; for (y = 1; y <= Bottom; y++) { list = list + replace([1,y], "\"", "\\\"") + "\\n"; } writeln("function compare(y1, y2, x) {"); writeln(" list = \"" + list + "\";"); writeln(" p1 = pos(list, \"\\n\" + [x,y1] + \"\\n\");"); writeln(" p2 = pos(list, \"\\n\" + [x,y2] + \"\\n\");"); writeln(" return p1 - p2;"); 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){"); writeln(" y = t + 1;"); writeln(" while(y <= b && compare(y,t,x) == 0){ y++; }"); writeln(" if(y > b){ return; }"); writeln(" if(compare(y,t,x) > 0){ p = y; }else{ p = t; }"); writeln(""); writeln(" y1 = t;"); writeln(" y2 = b;"); writeln(" while(y1 <= y2){"); writeln(" while(compare(y1,p,x) < 0 && y1 <= y2){ y1++; }"); writeln(" while(compare(y2,p,x) >= 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); }"); writeln(" if(y1 < b){ qsort(l,y1,r,b,x); }"); writeln("}"); writeln(""); writeln("qsort(1,1,Right,Bottom,x);");