Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const
- MX = 2000;
- type
- arr = array [1..MX] of longint;
- var
- ar, tmp: arr;
- n, k1, k2, i, pc, sc, res: longint;
- procedure merge(var a: arr; l, m, r: int64); //процедура слияния
- var
- i, j, k: int64;
- begin
- i := l;
- j := m + 1;
- k := 1;
- while (i <= m) or (j <= r) do begin //проход по 2 маленьким массивам
- if (i > m) or ((j <= r) and (a[i] > a[j])) then begin //сравнение элеекнтов
- tmp[k] := a[j]; //добавление в массив побольше из 2го маленького массива
- inc(j);
- end else begin
- tmp[k] := a[i]; //из 1го
- inc(i);
- end;
- inc(k);
- end;
- for i := l to r do
- a[i] := tmp[i - l + 1]; //разрушение временного массива
- end;
- procedure merge_sort(var a: arr; l, r: int64); //процедура деления
- var
- m: int64;
- begin
- if l < r then begin
- m := (l + r) div 2;
- merge_sort(a, l, m);
- merge_sort(a, m + 1, r);
- merge(a, l, m, r); //слить маленькие массивы
- end;
- end;
- begin
- read(n);
- for i := 1 to n do begin
- read(ar[i]);
- end;
- merge_sort(ar, 1, n); //отсортировать, параметры: имя массива, индекс самого левого элемента, индекс самого правого элемента
- for i := 1 to n do begin
- write(ar[i], ' ');
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement