Mehrdimensionales Array sortieren

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Ebola33

Betreff: Mehrdimensionales Array sortieren

BeitragMi, Apr 20, 2005 16:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute,
glaube ich hab n extremen Denkfehler gerade. Es geht um folgendes.
Ich habe eine Liste mit mehreren tausend Einträgen mit Koordinaten der Planeten eines Browsergames.
Die Koordinaten sind so aufgebaut z.B. 280:127:4 bedeutet galaxie 280, Sonnensystem 127 Planet 4.
Die Koordinaten habe ich so gespeichert :
BlitzBasic: [AUSKLAPPEN]
Dim daten(anzahl,2)

wobei anzahl(1. dimension) den Index des Listeneintrages enthält.(Dieser index enthält informationen über den Planeten, name usw. muss also sortiert werden)
2. dimension : (hiernach muss sortiert werden)
0=galaxie
1=Sonnensystem
2=Planet

So weit so gut. Sortieren geht auch wunderbar (Bubblesort) allerdings nur nach Galaxien. Ich möchte aber innerhalb der Galaxien auch nach Sonnensystemen Arrow Planeten sortiert haben.
Ich habe da echt nen Denkfehler was das sortieren angeht. Für eure Hilfe bin ich jetzt schon dankbar.

Mfg Ebola Embarassed
ansteckend... Wink
verstaubtes Projekt : http://www.mitglied.lycos.de/ebola33/

Ctuchik

BeitragMi, Apr 20, 2005 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist relativ leicht!
Wenn du 2 Einträge vergleichst, um zu sehen welcher größer ist, dann vergleichst du zunächst die Galaxie. Wenn die gleich ist, dann vergleich auch noch das Sonnensystem. Wenn das auch gleich ist, dann vergleichst du die Planeten. Fertig.
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle!
Fraget euren Arzt oder Apotheker!

Alfadur

BeitragMi, Apr 20, 2005 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
du hast mit daten ein zweidimensionales array, erklär mir mal was dann zb in daten(1,0), daten(1,1) und daten(1,2) drinsteht... wie das dann aufgebaut ist ... ist das dann planet nummer 1, mit daten(1,0)=galaxie, daten(1,1)=system und daten(1,2)=planet?
A Cray is the only computer that runs an endless loop in less than four hours.

Ebola33

BeitragMi, Apr 20, 2005 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau. Villeicht habe ich mich falsch ausgedrückt.
Die Liste sieht so aus :

8 Shaddam Mitglied 46 104:188:1
9 Parano Mitglied 11 104:66:2
10 Mastkiller Mitglied 31.5 101:121:9
11 HariSeldon Mitglied 24 102:273:4
12 karmus Mitglied 31.25 102:273:4
13 JoeB Mitglied 37 101:247:12
14 Tlactar Mitglied 11 103:115:7
15 multitone Mitglied 33 102:175:7
16 lencker Mitglied 28 103:154:5
17 DrTod Mitglied 44.5 100:134:8
18 McCloud Mitglied 22 101:260:3
usw.....

die soll geordnet werden.
Ich habe ein stringarray erstellt und mit readline jede Zeile einzeln ausgelesen.
Dann den String nach den Koordinaten durchsucht und diese dann ins Array daten() gespeichert.

daten (1,0) 1 wäre der index des 1. listeneintrags , 0 ist die Galaxie
daten (1,1) 1 wäre der index des 1. listeneintrags , 1 ist das Sonnensystem
daten (1,2) 1 wäre der index des 1. listeneintrags , 2 ist das Planet

jetzt muss die 1. dimension sortiert werden nach wertigkeit der 2.
Danach wird das stringarray in der richtigen Reihenfolge in die datei geschrieben.
Edit : Ich hab jetzt ne funktion die das macht. Leider viel zu umständlich und sehr langsam.
ansteckend... Wink
verstaubtes Projekt : http://www.mitglied.lycos.de/ebola33/

Alfadur

BeitragMi, Apr 20, 2005 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
liegt wohl auch mit am wirklich sehr langsamen bubblesort, vielleicht solltest du quicksort oder mergesort in betracht ziehen, sind beide etwa gleich schnell, mergesort manchmal etwas schneller, aber beide immernoch 1000x schneller als bubblesort...
A Cray is the only computer that runs an endless loop in less than four hours.

Ebola33

BeitragMi, Apr 20, 2005 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh danke,
Quicksort ist das Mittel der Wahl. Kannte das gar nicht Embarassed

- erledigt -
ansteckend... Wink
verstaubtes Projekt : http://www.mitglied.lycos.de/ebola33/

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group