! Gnome sort in T3X/0 use t3x: t; use string: str; use strfmt: fmt; use io; gnome_sort(arr, arrlen, cmpfn) do var i, tmp; i := 0; while (i < arrlen) do ie (i = 0 \/ call cmpfn(arr[i], arr[i - 1])) do i := i + 1; ! the gnome steps forward end else do ! swap tmp := arr[i]; arr[i] := arr[i-1]; arr[i-1] := tmp; i := i - 1; ! the gnome steps back end end return arr; end cmp_asc(prev, cur) return prev >= cur; cmp_dec(prev, cur) return prev <= cur; do var arr, arrlen, i, b::16; arr := [(1333, 0, 47, 2, 124, 39, 2, 1, 5, 10)]; arrlen := 10; arr := gnome_sort(arr, arrlen, @cmp_asc); for (i=0, arrlen) do io.writes(fmt.format(b, "%ud ", [(arr[i])])); end io.nl(); end