Ограничения: время – 200ms/500ms, память – 128MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Напишите функции ``QuickSort`` и ``Partition``, псевдокод для которых написан ниже.
```c
int n;
...
int a[n];
...
QuickSort(a,0,n-1);
...
```
В качестве решения необходимо отправлять файл, содержащий только определение функции!
`"Алгоритм " "QuickSort"(A, l, r)`
// Входные данные: Подмассив `A[l...r]` массива `A[0...n - 1]`,
// определяемый начальным и конечным индексами `l` и `r`
// Выходные данные: Подмассив `A[l...r]`, отсортированный
// в неубывающем порядке
`bb"if " l < r`
`quad s larr "Partition"(A,l,r)` // `s` — позиция разбиения
`quad "Quicksort"(A,l,s-1)`
`quad "Quicksort"(A,s+1,r)`
`"Алгоритм " "Partition"(A,l.r)`
// Входные данные: Подмассив `A[l...r]` массива `A[0...n - 1]`,
// определяемый начальным и конечным индексами `l` и `r`
// Выходные данные: разбиение `A[l...r]`, возвращается позиция разбиения
`p larr A[l]; i larr l+1; j larr r`
`bb"repeat"`
`quad bb"while " i<=r " и " A[i]<p bb" do"`
`quad quad quad i larr i+1`
`quad bb"while " A[j]>p bb" do"`
`quad quad quad j larr j-1`
`quad bb"if " i>=j`
`quad quad quad "обмен " A[l] " и " A[j]`
`quad quad quad bb"return " j`
`quad "обмен " A[i] " и " A[j]`
`quad i larr i+1; j larr j-1`