Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [RESOLVED]Sortowanie szybkie (Quicksort)
Forum PHP.pl > Forum > PHP
cojack
Więc algorytmik sobie wygląda tak:

  1. <?php
  2. function zmiana(&$a, &$b)
  3. {
  4.  $tmp = $a;
  5.  $a = $b;
  6.  $b = $tmp;
  7. }
  8.  
  9. function Quicksort (&$tab, $left, $right)
  10. {
  11.  if($left < $right)
  12.  {
  13.    $m = $left;
  14.    for($i = $left+1; $i <= $right; $i++)
  15.      if($tab[$i] < $tab[$left])
  16.      {
  17.        zmiana($tab[++$m],$tab[$i]);
  18.      }
  19.    zmiana($tab[$left],$tab[$m]);
  20.    Quicksort($tab,$left,$m-1);
  21.    Quicksort($tab,$m+1,$right);
  22.  }
  23. }
  24.  
  25. $tablica = array (29,40,2,1,6,18,20,32,23,34,39,41);
  26. $prawa = count($tablica)-1;
  27. Quicksort($tablica,$tablica[0],$tablica[$prawa]);
  28. print_r($tablica);
  29. ?>


I za żadne skarby nie chce działać...błąd który zwraca to: Notice: Undefined offset: 40 in /srv/http/test.php on line 16, czyli linijka: if($tab[$i] < $tab[$left]), oraz 41-elementową tablice... ma ktoś pomysł?

Temat do zamknięcia, zamiast nr to ja przesyłałem wartość elementu tablicy.

Poprawy kod:
  1. <?php
  2.  
  3. function zmiana(&$a, &$b)
  4. {
  5.  $tmp = $a;
  6.  $a = $b;
  7.  $b = $tmp;
  8. }
  9.  
  10. function Quicksort (&$tab, $left, $right)
  11. {
  12.  if($left < $right)
  13.  {
  14.    $m = $left;
  15.    for($i = $left+1; $i <= $right; $i++)
  16. //       var_dump($left, $i, $tab);exit;
  17.      if($tab[(int)$i] < $tab[(int)$left])
  18.      {
  19.        zmiana($tab[++$m],$tab[$i]);
  20.      }
  21.    zmiana($tab[$left],$tab[$m]);
  22.    Quicksort($tab,$left,$m-1);
  23.    Quicksort($tab,$m+1,$right);
  24.  }
  25. }
  26.  
  27. $tablica = array (29,40,2,1,6,18,20,32,23,34,39,41);
  28. $prawa = count($tablica)-1;
  29. Quicksort($tablica,0,$prawa);
  30. print_r($tablica);
  31.  
  32. ?>


Więcej o funkcjach sortujących, możecie przeczytać na moim blogu, link w stopce,
bim2
Ale przecież istnieją funkcje sortujące w php...

Może chciałeś tylko zareklamować bloga?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.