Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP Sortowanie
Forum PHP.pl > Forum > PHP
rudald
Witam, piszę sortowanie liczb, lecz natknąłem się na problem:
porównując liczbę trzycyfrową z dwucyfrową to niezawsze ta pierwsza jest większa..

  1. <?php
  2. for($p=0; $p<30; $p++)
  3. {
  4. $liczba=rand(0,350);
  5. echo $x[$p]=$liczba.' ';
  6. }
  7. echo '<br>';
  8. $m=1;
  9.  
  10. for($k=1; $k<$p; $k++)
  11. {
  12. $n=1;
  13. for($i=1; $i<$p; $i++)
  14. {
  15. if ($x[$m]<$x[$n])
  16. {
  17. $a=$x[$m];
  18. $b=$x[$n];
  19. $x[$n]=$a;
  20. $x[$m]=$b;
  21. }
  22. $n++;
  23. }
  24. $m++;
  25. }
  26.  
  27. for ($j=1; $j<$p; $j++)
  28. {
  29. echo $x[$j].' ';
  30. }
  31. echo '<br>';
  32.  
  33. ?>

W ogóle jakby mógł ktoś wyjaśnić kilka podstawowych sposobów sortowania to byłbym wdzięczny.
Bo ta strona choć mówi wiele http://edu.i-lo.tarnow.pl/inf/alg/003_sort/index.php to jednak i tak nie trybię...
Wiem, że istnieje funkcja w php sort itd. lecz chcę znać zasadę działania tejże funkcji : ).


EDIT - $a i $b są stringami.
  1. settype($a,integer);
  2. settype($b,integer);

po wklepaniu już nie ma problemu : )
darko
Jest trochę tych algorytmów, np.
sortowanie przez wstawianie, bąbelkowe, quicksort, przez kopcowanie (heap sort), przez scalanie. Więcej na:
http://pl.wikipedia.org/wiki/Sortowanie
http://www.home.umk.pl/~abak/wdimat/s/Index.html
mortus
W linii 5 robisz z liczby łańcuch znaków ze spacją, dlatego liczby trzycyfrowe są mniejsze od dwucyfrowych w Twoim przypadku. Kod powinien raczej tak wyglądać (linia 5 i nowa linia 6):
  1. $x[$p]=$liczba;
  2. echo $liczba.' ';
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.