Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program quick;
- {$APPTYPE CONSOLE}
- {$R *.res}
- uses
- System.SysUtils;
- type
- mas = array [1 .. 100] of integer;
- Var
- n, i: integer;
- mass: mas;
- procedure quicks(first, last: integer; var m: mas);
- var
- i, j, Temp, Mid, n: integer;
- begin
- i := first;
- j := last;
- Mid := m[(first + last) div 2];
- { выбираем серединный эл-нт массива и делим массив пополам }
- repeat
- while m[i] < Mid do//меняем знак чтобы изменить сортировку
- i := i + 1; { считываем всю левую часть до этого элемента }
- while m[j] > Mid do//меняем знак чтобы изменить сортировку
- j := j - 1; { считываем всю правую часть до этого элемента }
- if i <= j then
- begin
- Temp := m[i]; { Сортируем элементы массива }
- m[i] := m[j];
- m[j] := Temp;
- i := i + 1;//сдвигаем индексы, сужаем круг вокруг опорного элемента mid
- j := j - 1;
- end;
- until i > j; {до тех пор пока индексы не пересекутся}
- {рекурсивно сортируем, можем и будем сортировать сразу две части}
- if first < j then {сортируем левую половину данного массива}
- quicks(first, j, m);
- if i < last then {сортируем правую половину данного массива}
- quicks(i, last, m);
- end;
- begin
- writeln('vvedite kol-vo el-ov massiva ');
- Readln(n);
- for i := 1 to n do
- begin
- writeln('vvedite ', i, 'element ');
- Readln(mass[i]);
- end;
- writeln(' icxodnyi massiv ');
- for i := 1 to n do
- write(mass[i]:4);
- writeln;
- writeln(' COPTUPOBAHHbIi MASSIV ');
- quicks(1, n, mass);
- for i := 1 to n do
- write(mass[i]:3);
- Readln
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement