Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Algorytm Quicksort, Gdzie jest błąd? :O
carbolymer
post
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 12
Dołączył: 27.01.2007
Skąd: north              Poziom: 158                     Tytuł: Miszcz

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


Naskrobałem taki kod:
  1. <?php
  2. /////////////////////////////////////////////
  3. function quickSortAsc(&$tab, $lewo, $prawo, $key)
  4. {
  5. if ($lewo<$prawo)
  6. {
  7. $k=$lewo;
  8. $p=$tab[$lewo][$key];
  9. for ($i=$lewo+1;$i<$prawo;++$i)
  10. if ($p>$tab[$i][$key])
  11. {
  12.  ++$k;
  13.  $temp=$tab[$i];
  14.  $tab[$i]=$tab[$k];
  15.  $tab[$k]=$temp;
  16. }
  17. $temp=$tab[$lewo];
  18. $tab[$lewo]=$tab[$k];
  19. $tab[$k]=$temp;
  20. quickSortAsc($tab, $lewo, $k-1, $key);
  21. quickSortAsc($tab, $k+1, $prawo, $key);
  22. }
  23. }
  24.  
  25. /////////////////////////////////////////////
  26. function quickSortDesc(&$tab, $lewo, $prawo, $key)
  27. {
  28. if ($lewo<$prawo)
  29. {
  30. $k=$lewo;
  31. $p=$tab[$lewo][$key];
  32. for ($i=$lewo+1;$i<=$prawo;++$i)
  33. if ($p<=$tab[$i][$key])
  34. {
  35.  ++$k;
  36.  $temp=$tab[$i];
  37.  $tab[$i]=$tab[$k];
  38.  $tab[$k]=$temp;
  39. }
  40. $temp=$tab[$lewo];
  41. $tab[$lewo]=$tab[$k];
  42. $tab[$k]=$temp;
  43. quickSortDesc($tab, $lewo, $k-1, $key);
  44. quickSortDesc($tab, $k+1, $prawo, $key);
  45. }
  46. }
  47. ?>

Obydwie funkcje sortują tablicę $tab według klucza $key.
quickSortDesc() - sortuje malejąco
quickSortAsc() - sortuje rosnąco
I jak sortuje tablicę rosnąco wg. klucza exp to nie wiadomo czemu potwór z exp=655 ląduje pomiędzy potworami z exp=25000 i exp=30000 I teraz mam pytanie:
Gdzie jest błąd? Prosiłbym o poprawienie ;D Thx ;p;p


--------------------
Blog | plugin system by carbolymer
Residence: #php.pl @ IRCNet
"Pralki powstały po to, aby kobiety też mogły programować"
Go to the top of the page
+Quote Post
EuReKa
post
Post #2





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 22.07.2007

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


Błędem było pisanie tego, zamiast użycia funkcji sort().
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 06:34