Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Algorytm magicznych piątek - Znajdź k-tą co do wielkości - bez sortowania
michaf1994
post
Post #1





Grupa: Zarejestrowani
Postów: 67
Pomógł: 2
Dołączył: 17.07.2014
Skąd: Wielkopolska

Ostrzeżenie: (0%)
-----


Cześć,
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=|);

1. Opis
2. Opis

Oraz to co udało mi się stworzyć:

  1. $n = !empty($_GET['n']) ? $_GET['n'] : 10;
  2.  
  3. $array = array();
  4.  
  5. for ($i=0; $i<$n; $i++) {
  6. $array[] = rand(1, 1000);
  7. }
  8.  
  9. $arrayHuman = print_r($array, true);
  10.  
  11. $k = !empty($_GET['k']) ? $_GET['k'] : 1;
  12.  
  13.  
  14.  
  15.  
  16. function magicFivesSelect($array, $k) {
  17. if ($n <= 10) {
  18. return $array[k];
  19. } else {
  20. //Tu nie wiem o co chodzi
  21. $m5 = magicFivesSelect(M, ceil(abs(M)/2));
  22. //Tu mam problem, bo nie wiem co było wcześniej
  23. }
  24. }
  25.  
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 10:36