Описанный сортировки чисел схож с алфавитной сортировкой строк за тем исключением, что разряды в числе располагаются справа налево, а не наоборот.
Для уменьшения количества вычислений сведем задачу к алфавитной сортировке, которую можно произвести встроенными в функцию sorted() алгоритмами. Для этого воспользуемся параметром оной функции key, этот параметр принимает функцию, через которую проходят все сортируемые значения перед сравнением. В этой функции приведем число к строке и запишем в обратном порядке.
Таким образом, алфавитная сортировка даст нам требуемый результат.
const
W = 600;
H = 600;
function F(x: real): real;
begin
F := sqr(x);
end;
var
x0, y0, x, y, xLeft, yLeft, xRight, yRight: integer;
a, b, fmin, fmax, x1, y1, mx, my: real;
begin
window.Init(0, 0, 800, 500, clwhite);
window.IsFixedSize := true;
xRight := 590;
yRight := 590;
a := -15;
b := 6;
fmin := -10;
fmax := 20;
mx := (xRight - xLeft) / (b - a);
my := (yRight - yLeft) / (fmax - fmin);
x0 := 380;
y0 := 490;
x1 := a;
while x1 <= b do
begin
y1 := F(x1);
x := x0 + round(x1 * mx);
y := y0 - round(y1 * my);
if (y >= 10) and (y <= 590) then SetPixel(x, y, clblack);
x1 := x1 + 0.001 ;
end;
end.