Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PHP Sortowanie
rudald
post 8.09.2011, 19:52:38
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 10.12.2008

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


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 : )

Ten post edytował rudald 8.09.2011, 20:10:56
Go to the top of the page
+Quote Post
darko
post 8.09.2011, 19:57:38
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


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


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
mortus
post 8.09.2011, 20:08:10
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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.' ';


Ten post edytował mortus 8.09.2011, 20:09:42
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 Wersja Lo-Fi Aktualny czas: 16.07.2025 - 02:38