Seite 1 von 1

BubbleSortList aber wie?

Verfasst: Mo, 07.10.2013 19:32
von clag
Hallo Kenner und Könner,

ehrlich manches ist zu hoch für mich :?
zB das umsetzen der OO Erkärung für die Funktion "BubbleSortList" in funktionierenden Code
http://www.dannenhoefer.de/faqstarbasic ... l#Zweig328
leider wird an anderen Stell exakt das gleiche Bsp gezeigt.
wie muss der/die Strings aussehen, wie oder wodurch getrennt sein, und wo einzusetzen??

Kann/mag mir das jemand an einem funktionierenden Beispiel verdeutlichen?

Re: BubbleSortList aber wie?

Verfasst: Mo, 07.10.2013 21:12
von balu
Hallo clag,
leider wird an anderen Stell exakt das gleiche Bsp gezeigt.
Du weißt schon das Du die andere Stelle nennen darfst. Mir sagt das im moment nämlich gar nix.

wie muss der/die Strings aussehen
Dazu solltest Du erstmal wissen was folgender Satz dir sagen will.
Es handelt sich also nicht um einen String, sondern um mindestens zwei getrennte Strings. Genauers kommt gleich noch.

wie oder wodurch getrennt sein
Nicht so sehr das 'wodurch' ist wichtig, vielmehr das 'wie'. Kommt auch gleich dran.

und wo einzusetzen?
Da wüsste ich jetzt auf die schnelle kein adäquates Beispiel aus meiner Grabbelkiste.

Kann/mag mir das jemand an einem funktionierenden Beispiel verdeutlichen?
Nö Du. Dazu hab ich jetzt auf die schnelle kein Lust. Kann jemand anderer machen. Ich möcht dir erstmal das wichtigste grob erklären, damit Du schon mal das Grundprinzip verstehst, na ja annähend.


Also was weißt Du überhaupt über ein 2 dimensionales Array? Da ich das nicht von dir weiß, erklär ich es mal ganz einfach.

Code: Alles auswählen

FaLi = DimArray(3)
Das ist ein eindimensionales Array, welches die Indexe 0 bis 3 hat. Es kann also 4 Inhalte aufnehmen.
Beispiel

Code: Alles auswählen

FaLi(0) = "&H000000"
FaLi(1) = "&H000080"
FaLi(2) = "&H008000"
FaLi(3) = "&H008080"
Und was fällt dir dabei so auf?
Rate nicht!
Es müsste dich an eine Calc-Tabelle erinnern. Oder etwa nicht? Denn es sind 4 Einträge untereinander in einer Spalte angeordnet. Und das ist ein eindimensionales Array.

Kommen wir zu einen 2 dimensionalen Array.

Code: Alles auswählen

FaLi = DimArray(1, 3)
So wird es dimensioniert.

Und so kann man es dann mit leben füllen.

Code: Alles auswählen

FaLi(0, 0) = "&H000000"
FaLi(0, 1) = "&H000080"
FaLi(0, 2) = "&H008000"
FaLi(0, 3) = "&H008080"

FaLi(1, 0) = "Schwarz"
FaLi(1, 1) = "Blau"
FaLi(1, 2) = "Grün"
FaLi(1, 3) = "Türkis"
Das sieht wohl nicht schlecht aus, man kann es aber auch etwas anders schreiben.

Code: Alles auswählen

FaLi(0, 0) = "&H000000" : FaLi(1, 0) = "Schwarz"
FaLi(0, 1) = "&H000080" : FaLi(1, 1) = "Blau"
FaLi(0, 2) = "&H008000" : FaLi(1, 2) = "Grün"
FaLi(0, 3) = "&H008080" : FaLi(1, 3) = "Türkis"
Durch diese schreibweise, getrennt mit dem Doppel punkt ':', kann man sich wohl ehern an eine 2 Spaltige Calc-Tabelle erinnern und sich dadurch eine kleine Eselsbrücke erstellen:
Eindimensionales Array = Eine Spalte in Calc.
2 dimensionales Array = 2 Spalten in Calc.

Wie Du siehst wird jeder 'String' einer bestimmten Position im mehrdimensionalem Array zugeordnet. Also quasi so ähnlich wie die Zelladressierung in Calc mit A1, B2 etc.

Und mit dieser einfachen kleinen Sub kannst Du selber testen was Du angezeigt bekommst, wenn Du bei der Print-Anweisung die dortigen Zahlen mit 0 bis 3 tauscht.

Code: Alles auswählen

Sub Main
FaLi = DimArray(1, 3)
FaLi(0, 0) = "&H000000" : FaLi(1, 0) = "Schwarz"
FaLi(0, 1) = "&H000080" : FaLi(1, 1) = "Blau"
FaLi(0, 2) = "&H008000" : FaLi(1, 2) = "Grün"
FaLi(0, 3) = "&H008080" : FaLi(1, 3) = "Türkis"

print FaLi (1, 1)

End Sub

Um noch mal auf BubbleSortList zurück zu kommen, habe damit aber noch keine Praktische Erfahrung gesammelt, so würde ich wohl sagen, dass das sich genau so verhällt wie in Calc 2 Spalten zu sortieren.

Sollte ich an irgendeiner Stelle blödsinn geredet haben, so dürfen mich unsere echten Spezialisten -{wozu ich ja nicht gehöre}- durchaus korrigieren.


Kannst ja sagen ob ich dir irgendwie geholfen habe, oder nicht. Wenn nicht, bin ich dir nicht böse.



Gruß
balu

Re: BubbleSortList aber wie?

Verfasst: Di, 08.10.2013 19:19
von clag
Hallo Balu,

erstmal Danke für die ausführliche Information zum Thema lesen und schreiben eines Arrays,
nun übe ich halt das umwandeln von Arrays bevor mir die erleuchtung zum Thema BubbleSortList kommt.
Die deutsch Apache OO Hilfe Seite spuckt zum Thema nur spanische Seiten aus, das kommt mir ausgesprochen spanisch vor.
Na mal sehen vieleicht lern ich ja nebenbei noch Spanisch und komme dann doch noch dahinter wie BubbleSortList anzuwenden ist. ;)

neben bei noch die Frage, kann mann ein Array eigentlich insgesamt mit print oder Msgbox anzeigen also Zeilen, Spalten
oder muß man sich erst Strings zusammenbasteln?

Re: BubbleSortList aber wie?

Verfasst: Di, 08.10.2013 20:21
von balu
Hallo clag,
erstmal Danke für die ausführliche Information zum Thema lesen und schreiben eines Arrays
Gern geschehn :)

nun übe ich halt das umwandeln von Arrays bevor mir die erleuchtung zum Thema BubbleSortList kommt.
Da wären wir schon zwei.

Na mal sehen vieleicht lern ich ja nebenbei noch Spanisch und komme dann doch noch dahinter wie BubbleSortList anzuwenden ist.
Da ich momentan mit anderen Dingen beschäftigt bin, weiß ich auch noch nicht so recht wie die Parameterübergabe da lautet. Selbst ein Beitrag von komma4 (Winfried) hat mir noch nicht die Erleuchtung gebracht. Gucki hier.

neben bei noch die Frage, kann mann ein Array eigentlich insgesamt mit print oder Msgbox anzeigen also Zeilen, Spalten
oder muß man sich erst Strings zusammenbasteln?
In der Doku von Andrew, auch in der deutschen Übersetzung, finden sich da so einige Beispiele. Aber eins habe ich mir dabei angewöhnt: In solch einen Fall nicht mit Print, sondern mit MagBox arbeiten.

Mal ein Beispiel.

Code: Alles auswählen

Sub Main
	FaLi = DimArray(1, 3)
	FaLi(0, 0) = "&H000000" : FaLi(1, 0) = "Schwarz"
	FaLi(0, 1) = "&H000080" : FaLi(1, 1) = "Blau"
	FaLi(0, 2) = "&H008000" : FaLi(1, 2) = "Grün"
	FaLi(0, 3) = "&H008080" : FaLi(1, 3) = "Türkis"

	for i = 0 to 3
		for u = 0 to 1
			sAus = sAus & Fali(u, i) & CHR$(10)
		next u
	next i
	
	msgbox sAus
End Sub
Man kann natürlich auch das Array mit LBound und UBound abfragen, aber als sehr stark vereinfachtes Beispiel solls so wohl reichen. Und durch die Reihenfolgeänderung von i und u sieht man dann halt auch eine andere Ausgabe des Array.



Gruß
balu

Re: BubbleSortList aber wie?

Verfasst: Di, 08.10.2013 23:18
von clag
Hi
also diese spanische Beispiel zum sortieren eines Arrays funktioniert gleich beim ersten Versuch,
ob auf oder absteigend sortiert wird, ist wählbar

Code: Alles auswählen

Sub PruebaOrdenar2()
 Dim mDatos()
 
     mDatos() = Array("5","l","o","f","e","v","y","d","h","u",)
     'Mostramos los datos desordenados
     MsgBox Join( mDatos(), Chr(13) )
 
     'Ordenamos los datos
     Call OrdenarBurbuja( mDatos(), 1 )
 
     'Mostramos los datos ordenados
     MsgBox Join( mDatos(), Chr(13) )
 
 End Sub
 
 ' Datos = matriz de datos a ordenar
 ' Orden =    1 ascendente
 '            2 descendente
 Sub OrdenarBurbuja(ByRef Datos() As Variant, ByVal Orden As Integer)
 Dim NumDatos As Long
 Dim co1 As Long, co2 As Long
 
     NumDatos = UBound(Datos)
     For co1 = 1 To NumDatos
         For co2 = NumDatos To co1 Step -1
             If Orden = 1 Then
                 If Datos(co2) < Datos(co2 - 1) Then
                     Call Intercambio Datos(co2), Datos(co2 - 1)
                 End If
             Else
                 If Not (Datos(co2) < Datos(co2 - 1)) Then
                     Call Intercambio Datos(co2), Datos(co2 - 1)
                 End If
             End If
         Next co2
     Next co1
 
 End Sub
 
 'Macro para intercambiar un par de valores
 Sub Intercambio(ByRef Dato1 As Variant, ByRef Dato2 As Variant)
 Dim sTmp As Variant
 
     sTmp = Dato1
     Dato1 = Dato2
     Dato2 = sTmp
 
 End Sub

Re: BubbleSortList aber wie?

Verfasst: Mi, 09.10.2013 09:29
von Karolus
Hallo

@Clag
Mglw. ist auch dieses Thema interessesant für dich.
Im Laufe des Threads hab ich noch etwas professionelle Hilfe aus dem Deutschen Python-forum in Anspruch genommen.

Karolus

Re: BubbleSortList aber wie?

Verfasst: Mi, 09.10.2013 16:55
von clag
Hallo Karolus,

danke für die Links da möchte ich mal hin kommen,
aber noch komm ich mit Python nicht klar. :(