Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

2Dimensionale Arrays sortieren

Diskussion: 2Dimensionale Arrays sortieren im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hallo, Wie kann ich ein 2 dimensionales Arra nach einem Element des "Unterarrays" sortieren?? z.B. ein Array $Daten[$i][$j] wie ...

Antwort
Alt 02.06.02, 23:31   #1 (permalink)
 
Registriert seit: 25.10.01
niedriger noob Leistung: Facit NTK
Likes: 0
Standard 2Dimensionale Arrays sortieren

Anzeige

Hallo,
Wie kann ich ein 2 dimensionales Arra nach einem Element des "Unterarrays" sortieren??

z.B. ein Array
$Daten[$i][$j]
wie kann ich das so sortieren, dass nach $Daten[$i][0] sortiert wird???

Das Array mit dem höchsten $Daten[$i][0] sollte als erstes kommen.
$Daten[2][höchstes]
$Daten[7][2.höchstes]
$Daten[4][3.höchstes]

Ich weiss, das ist umständlich und schlecht beschrieben, aber ich weiss nicht, wie ich´s sonst noch beschreiben kann.

thx im Voraus
Noob

niedriger noob ist offline   Mit Zitat antworten
Alt 03.06.02, 17:18   #2 (permalink)
Member of Honour
 
Registriert seit: 20.10.01
boppy Leistung: Facit NTK
boppy eine Nachricht über ICQ schicken
Likes: 0
Standard

Schreibe mal 10 oder 20 beispiele... ich brauch was handfestes um zu helfen. danke!
boppy ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 03.06.02, 20:14   #3 (permalink)
Themenstarter
 
Registriert seit: 25.10.01
niedriger noob Leistung: Facit NTK
Likes: 0
Standard

ok, hier mal ein paar beispiele
das hier
$Daten[0][0]=1
$Daten[0][1]="Hallo"
$Daten[0][2]="Test"
$Daten[1][0]=4
$Daten[1][1]="Nochmals Hallo"
$Daten[1][2]="Wieder Test"
$Daten[2][0]=3
$Daten[2][1]="bla"
$Daten[2][2]="bla"
$Daten[3][0]=2
$Daten[3][1]="blabla"
$Daten[3][2]="blabla"

sollte zu
$Daten[0][0]=1
$Daten[0][1]="Hallo"
$Daten[0][2]="Test"$
$Daten[1][0]=2
$Daten[1][1]="blabla"
$Daten[1][2]="blabla"
$Daten[2][0]=3
$Daten[2][1]="bla"
$Daten[2][2]="bla"
$Daten[3][0]=4
$Daten[3][1]="Nochmals Hallo"
$Daten[3][2]="Wieder Test"

sortiert werden.
niedriger noob ist offline   Mit Zitat antworten
Alt 04.06.02, 23:28   #4 (permalink)
Member of Honour
 
Registriert seit: 20.10.01
boppy Leistung: Facit NTK
boppy eine Nachricht über ICQ schicken
Likes: 0
Standard

vergiss es! da könnte man eine funktion schreiben. aber da kommst du nicht so einfach bei weg. Das is echt hammer. habe das mal angefangen, aber da ich keinen sinn darin sehe, lasse ich es
sorry!
boppy ist offline   Mit Zitat antworten
Alt 05.06.02, 00:01   #5 (permalink)
Watchme
Guest
 
Likes:
Standard

wenn du wenigstens das ding so sortieren wolltest dass an stelle 00 das erste ist , an stelle 01 das 2. usw..

aber 00 > 04 > 07 .. der algorithmus ist sch*****

CU

WaTchME
  Mit Zitat antworten
Alt 05.06.02, 00:53   #6 (permalink)
Themenstarter
 
Registriert seit: 25.10.01
niedriger noob Leistung: Facit NTK
Likes: 0
Standard

Ich glaub ich weiss schon, was ich in den Sommerferien machen werde. In 80 Tagen durch´s Array.
Da PHP C eh einigermassen ähnlich ist, hab ich wenigstens mit der Sprache keine Probleme.

mfg
Noob
niedriger noob ist offline   Mit Zitat antworten
Alt 06.06.02, 13:10   #7 (permalink)
 
Registriert seit: 31.01.02
Armitage Leistung: Facit NTK
Likes: 0
Standard

@niedriger noob

Also...zweidimenionale Arrays sortieren ist nicht wirklich kompliziert...
So wie ich das sehe willst Du das in php machen...

Also gehen wir mal von Zahlen aus...

Nehmen wir mal an das Array sieht so aus..

array[3][4] {{ 8, 7, 6, 5}
{ 4, 3, 2, 2}
{ 9, 8, 7, 1}}

Und nehmen wir weiter an das Du die 9 rechts unten, und die 1 links oben haben moechtest. und zwar erst horizontal und dann vertikal..also so

array[3][4]{{ 1, 2, 2, 3}
{ 4, 5, 6, 7}
{ 7, 8, 8, 9}}


Der weg ist folgender...

- Du duchsuchst das Array nach der niedrigsten Zahl...also der 1.
Und das horizontal...- wenn Du eine gefunden hast dann kopierst Du sie an (nach Deinem
System) an die ersten Stelle Deines Arrays..also array[1][1].- VORHER musst Du allerdings die Variable (oder-was-auch-immer)
mit der Du tauschen wirst ( also mit der 8 an array[1][1]) kurzfristig
in eine zusatzvariable packen..da sonst (hier die die Variable
ja ueberschrieben wird..
- danach kopierts Du die 8 dorthin, wo vorher die 1 war.
- zusaetzlich deklarierst Du Dir eine Variable die als eine Art "Merker"
funktioniert...d.h. wenn Du die erste niedrigste ZAhl vertauscht hast
musst Du sie von array[1][1] auf [1][2] setzen..
Wenn Du so das Array durchlaufen hast, suchst Du nach der naechst-
hoeheren Zahl..also der 2 und verfaehrst genauso...

Das einzig wichtige ist dabei das Dein "Merker" immer, wenn Du eine Zahl vertauscht hast einen hochgezaehlt wird...
wenn Du mit Deinem Merker bei array[1][4] angelangt bist, dann wird er (logischerweise, wenn Du etwas dorhin kopiert hast) auf [2][1] gesetzt...

Vermutlich hast Du aber auch Text in Deinem Array..neben Zahlen oder auch nur Text....da musst Du schauen ob es in PHP Funktionen gibt mit denen Du "lexikographisch" Text vergleichen kannst..

also ob AAA hoeher oder niedriger ist als CCC....
so..thats the way...
viel spass beim "basteln"..

btw: wenn Du eine Loesung in C haben willst dann kann ich Dir eine mailen...

:wq!
Armitage ist offline   Mit Zitat antworten
Alt 06.06.02, 13:40   #8 (permalink)
Themenstarter
 
Registriert seit: 25.10.01
niedriger noob Leistung: Facit NTK
Likes: 0
Standard

@seht
Zitat:
@niedriger noob
Ja
erstmal thx für die Antwort, aber
Es sollte nicht
array[3][4]{{ 1, 2, 2, 3}
{ 4, 5, 6, 7}
{ 7, 8, 8, 9}}
rauskommen sondern
array[3][4]{
{ 9,8,7,1}
{ 8,7,6,5}
{ 4,3,2,2}} .

Es soll nur nach dem ersten Element sortiert werden, sonst ist ja die ganze 2. Dimension durcheinander. Aber ich denke dank deines Postings hab ist mir eine Idee gekommen wie ich das machen könnte. Ich nehme als Merker ein 1D-Array.
1) Suche nach dem höchsten $Daten[$1][0]. Das ist noch einfach.
2) Kopieren von Daten[0][0-4(oder wieviele es halt hat)] in den Merker.
3) Kopieren des höchsen gefundenen $Daten[$1][0-4] an $Daten[0][0-4]. Kopieren des Markers an die Position des gefundenen. Der Zähler springt jetzt auf $Daten[1][0-4] weiter, das erste Arrayelement ist ja schon das Höchste und darf nicht mehr in der Suche nach dem höchsten einbezogen werden.
4) Jetzt geht das ganze Spiel von vorne los, wieder suchen des Höchsten $Daten[$i][0], in den Merker u,s,w

Ich werd das in den Sommerferien mal ausprobieren, sollte eigentlich in 2 Monaten zu schaffen sein.

mfg
Noob
niedriger noob ist offline   Mit Zitat antworten
Alt 06.06.02, 13:56   #9 (permalink)
 
Registriert seit: 31.01.02
Armitage Leistung: Facit NTK
Likes: 0
Standard

genau so )

:Wq
1
Armitage ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » 2Dimensionale Arrays sortieren
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
bash, sed arrays und newline sw33tlull4by Code Kitchen 10 18.07.08 20:47
c++ fehler bei arrays clAu$ Code Kitchen 8 17.02.08 00:57
Programm zur Darstellung von Arrays(Matrizen) odigo Applikationen 2 22.08.07 11:57
[Java]Methoden und Arrays Phibrizzo Code Kitchen 4 15.08.05 14:44
PHP: name eines arrays ausgeben? simb (Web-) Design und webbasierte Sprachen 3 13.04.03 12:41


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61