const MAXN = 100000; var a: array [1..MAXN] of longint; procedure swap(var a, b: longint); var temp: longint; begin temp := a; a := b; b := temp; end; procedure quicksort(l, r: longint); var border, i: longint; begin if l < r then begin border := l; for i := l to r - 1 do if (a[i] < a[r]) then begin swap(a[border], a[i]); inc(border); end; swap(a[border], a[r]); quicksort(l, border - 1); quicksort(border + 1, r); end; end; var n, i: longint; begin read(n); for i := 1 to n do read(a[i]); quicksort(1, n); for i := 1 to n do write(a[i], ' '); end.
|
const MAXN = 100000; var a: array [1..MAXN] of longint; procedure swap(var a, b: longint); var temp: longint; begin temp := a; a := b; b := temp; end; procedure quicksort(l, r: longint); var border, i: longint; begin if l < r then begin swap(a[random(r - l + 1) + l], a[r]); border := l; for i := l to r - 1 do if (a[i] < a[r]) or ((a[i] = a[r]) and (random(2) = 1)) then begin swap(a[border], a[i]); inc(border); end; swap(a[border], a[r]); quicksort(l, border - 1); quicksort(border + 1, r); end; end; var n, i: longint; begin read(n); for i := 1 to n do read(a[i]); quicksort(1, n); for i := 1 to n do write(a[i], ' '); end.
|