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 909
Pomógł: 267
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.
--------------------
blog
Kuchnia Kopytka
www.wykangurzeni.pl
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: 14.10.2019 - 08:03