Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> [PHP]funkcja do sortowania bez użycia sort
robin5hood
post 3.06.2008, 16:14:48
Post #1





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 16.05.2008

Ostrzeżenie: (10%)
X----


napisałem taką funkcję do sortowania bez użycia sort ale nie działa kto mi podpowie smile.gif
Kod
<?php


function sort($a=array())
{
     $range=count($a);
    
$pom=$a[0];
for($i=1;$i<$range;$i++)
{
if($a[$i+1]<$a[$i]){$pom=$a[$i]; $a[$i]=$a[$i+1]; $a[$i+1]=$pom}
}
return $pom;
}
$tab=array(34,1,20,0,-1);
sort($tab)
?>


Ten post edytował robin5hood 3.06.2008, 16:15:38
Go to the top of the page
+Quote Post
nevt
post 3.06.2008, 16:20:21
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


funkcja sort() nic nie sortuje ...


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
JoShiMa
post 3.06.2008, 16:22:10
Post #3





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Z tego co widzę zrobiłeś coś w stylu sortowania bąbelkowego, ale pętla for załatwia Ci tylko jedną iterację. Musisz to wsadzić do jeszcze jednej pętli (while), która będzie się wykonywać póki nie przestaniesz używać warunku if($a[$i+1]<$a[$i]). Poczytaj sobie o tym sortowaniu http://www.i-lo.tarnow.pl/edu/inf/alg/algsort/pages/004.php.

A w ogóle to czemu piszesz to na piechotę?

Ten post edytował JoShiMa 3.06.2008, 16:23:18


--------------------
Go to the top of the page
+Quote Post
robin5hood
post 3.06.2008, 16:24:07
Post #4





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 16.05.2008

Ostrzeżenie: (10%)
X----


po prostu mam takie ćwiczenie smile.gif
a jak tu zastosowac while?
Go to the top of the page
+Quote Post
JoShiMa
post 3.06.2008, 16:26:36
Post #5





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Podedytowałam swój post i dodałam link. Tam masz wszystko opisane wraz ze schematem algorytmu. Powodzenia.


--------------------
Go to the top of the page
+Quote Post
robin5hood
post 3.06.2008, 16:29:39
Post #6





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 16.05.2008

Ostrzeżenie: (10%)
X----


Miałem właśnie taką funkcję w DELPHI i próbowałem ją przerobic ale doszedłem tylko do tego co w pierwszym poście sad.gif
co musze zmienic tam?

Ten post edytował robin5hood 3.06.2008, 16:53:57
Go to the top of the page
+Quote Post
JoShiMa
post 4.06.2008, 07:47:46
Post #7





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Jesli nie umiesz przeczytać algorytmu przedstawionego graficznie i jeśli nie rozumiesz, że trzeba dodać pętlę to jak Ci to wyjaśnić? Zrobić zadanie domowe za Ciebie? Przyłóż się.


--------------------
Go to the top of the page
+Quote Post
robin5hood
post 5.06.2008, 05:40:14
Post #8





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 16.05.2008

Ostrzeżenie: (10%)
X----


dodałem tą pętle czy o to chodziło?
Kod
<?php
function display($a=array())
{
$range=count($a);
for($i=0;$i<$range;$i++)
{echo $a[$i]." ";}
}


function sort($a=array())
{
    $range=count($a);
    
$pom=$a[0];
for($j=1;$j<$range;$j++)
{
for($i=1;$i<$range;$i++)
{
if($a[$i+1]<$a[$i]){$pom=$a[$i]; $a[$i]=$a[$i+1]; $a[$i+1]=$pom;}
}
}


$tab=array (35,56,88,99,11,134);
$tab1=sort($tab);display($tab1);
?>
Go to the top of the page
+Quote Post
JoShiMa
post 5.06.2008, 09:29:33
Post #9





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


A działa? Bo wygląda na oko (ostrzegam, że krótko patrzyłam), że powinno zadziałać. Gdyby jakoś mądrze prze myśleć warunek to dałoby się zamiast for wykorzystać pętlę while, która w sytuacji bardziej uporządkowanej tablicy wykonywałaby się na pewno krócej, ale nie mam teraz pomysłu na ten warunek. Tak improwizując można by było sprawdzać, ćzy w wewnętrznej pętli choć raz nastąpiło przestawienie pary. Jeśli nie zdarzyło się to to wiadomo, że już można przerwać pętlę zewnętrzną.


--------------------
Go to the top of the page
+Quote Post
robin5hood
post 5.06.2008, 10:08:29
Post #10





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 16.05.2008

Ostrzeżenie: (10%)
X----


no nadal niestety nie działa mimo że dodałem tę pętle for,a pętli while bardzo nie znam bo na razie stosowłem zawsze for wstydnis.gif
Go to the top of the page
+Quote Post
JoShiMa
post 5.06.2008, 10:13:58
Post #11





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Cytat(robin5hood @ 5.06.2008, 09:08:29 ) *
no nadal niestety nie działa mimo że dodałem tę pętle

A jaki jest wynik? Nie powinno być w obu pętlach for($j=0 i for($i=0 questionmark.gifquestionmark.gif oraz $range=count($a)-1 questionmark.gifquestionmark.gif;

Cytat(robin5hood @ 5.06.2008, 09:08:29 ) *
for,a pętli while bardzo nie znam bo na razie stosowłem zawsze for

Może czas się nauczyć?

Ten post edytował JoShiMa 5.06.2008, 10:15:43


--------------------
Go to the top of the page
+Quote Post
robin5hood
post 9.06.2008, 09:13:23
Post #12





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 16.05.2008

Ostrzeżenie: (10%)
X----


Nie powinno być w obu pętlach for($j=0 i for($i=0 questionmark.gif questionmark.gif oraz $range=count($a)-1 questionmark.gif questionmark.gif ;

a czy to zmieni coś w progrramie?
Go to the top of the page
+Quote Post
batman
post 9.06.2008, 09:37:58
Post #13





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




@robin5hood
Dostałeś gotowe rozwiązanie w postaci nazwy algorytmu oraz linka do tego, jak on działa. Sądzę, że potrafisz znaleźć w wyszukiwarce na forum lub na google podpowiedź.

Zamykam.
@JoShiMa dostaje plusa.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post

Closed 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: 27.04.2024 - 05:08