muszę napisać algorytm do zadania (Dana jest tablica n liczb. Znajdź k-tą co do wielkości - bez sortowania) poniżej przedstawiam pseudokod i źródło.
Jeżeli ktoś z Was coś wie to bardzo proszę o pomoc.
Kod
MagicFivesSelect(A[1..n], k);
if n<=10 then
posortuj tablicę A
return A[k]
else
podziel elementy z tablicy A na podciągi 5-elementowe: P1,...,Pn/5
(jeśli n nie jest wielokrotnością 5, uzupełnij ostatni podciąg wartościami +∞)
Niech M = { Pi[3] : 1 ≤ i ≤ n/5 } (zbiór median ciągów Pi);
m5 ← MagicFivesSelect(M, ⌈|M|/2⌉);
A< ← { A[i] : A[i] < m5 };
A= ← { A[i] : A[i] = m5 };
A> ← { A[i] : A[i] > m5 };
if |A<| ≥ k
return MagicFivesSelect(A<, k);
else if |A<|+|A=| ≥ k
return m5;
else
return MagicFivesSelect(A>, k-|A<|-|A=|);
if n<=10 then
posortuj tablicę A
return A[k]
else
podziel elementy z tablicy A na podciągi 5-elementowe: P1,...,Pn/5
(jeśli n nie jest wielokrotnością 5, uzupełnij ostatni podciąg wartościami +∞)
Niech M = { Pi[3] : 1 ≤ i ≤ n/5 } (zbiór median ciągów Pi);
m5 ← MagicFivesSelect(M, ⌈|M|/2⌉);
A< ← { A[i] : A[i] < m5 };
A= ← { A[i] : A[i] = m5 };
A> ← { A[i] : A[i] > m5 };
if |A<| ≥ k
return MagicFivesSelect(A<, k);
else if |A<|+|A=| ≥ k
return m5;
else
return MagicFivesSelect(A>, k-|A<|-|A=|);
1. Opis
2. Opis
Oraz to co udało mi się stworzyć:
for ($i=0; $i<$n; $i++) { } function magicFivesSelect($array, $k) { if ($n <= 10) { return $array[k]; } else { //Tu nie wiem o co chodzi //Tu mam problem, bo nie wiem co było wcześniej } }