Helpdesk
Menschen Wissenschaft Politik Mystery Kriminalfälle Spiritualität Verschwörungen Technologie Ufologie Natur Umfragen Unterhaltung
weitere Rubriken
PhilosophieTräumeOrteEsoterikLiteraturAstronomieHelpdeskGruppenGamingFilmeMusikClashVerbesserungenAllmysteryEnglish
Diskussions-Übersichten
BesuchtTeilgenommenAlleNeueGeschlossenLesenswertSchlüsselwörter
Schiebe oft benutzte Tabs in die Navigationsleiste (zurücksetzen).

Mergesort Processing

92 Beiträge ▪ Schlüsselwörter: Processing, Mergesort ▪ Abonnieren: Feed E-Mail

Mergesort Processing

19.04.2010 um 13:24
Hallo liebe Allmy Gemeinde, ich versuche hier grade ein Anschauliches Beispiel zum Verständnis in Processing zu erstellen.

Ich möchte den Namen Caroline im Programm Processing nach den Mergesort Algorithmus sortieren.

Habe bis jetzt nur folgendes gefunden:

void mergesort(int a[], int l, int r){ //l=linker Rand, r=rechter Rand
if(r>l){
int i, j, k, m; //Variablen deklarieren
m=(r+l)/2; //Mitte ermitteln
mergesort(a, l, m); //linke Teildatei
mergesort(a, m+1, r); //rechte Teildatei
for(i=m+1; i>l; i--) b[i-1]=a[i-1]; //linke Teildatei in Hilfsarray
for(j=m; j<r; j++) b[r+m-j]=a[j+1]; //rechte Teildatei umgedreht in Hilfsarray
for(k=l; k<=r; k++)
a[k]=(b<b[j])?b[i++]:b[j--]; //füge sortiert in a ein
}
}


Jetzt weiß ich aber nicht wo ich was einfügen soll. Da ich keine Ahnung habe wie dieses Programm funktioniert.

Bitte um Hilfe, da es mich wirklich interessiert.



1x zitiertmelden

Mergesort Processing

19.04.2010 um 14:07
Ich bin ein wenig verwirrt.

Du willst einen Namen sortieren? Wie? Wenn es nur einen Namen gibt, dann kann der auch in keiner Namensliste sortiert werden. Oder möchtest Du die einzelnen Buchstaben des Namens sortieren? Kurz und gut, sag doch mal präzise, was die Software machen soll (oder wenigstens, was die Sortierkomponente tun soll)

Nebenbei, wird mergesort (wie viele andere Befehle übrigens auch) ziemlich einleuchtend auf wikipedia erklärt:

Wikipedia: Mergesort


melden

Mergesort Processing

19.04.2010 um 17:16
Sie will natürlich die Zeichen sortieren. Es sieht für mich wie Java aus.
Nur wird da eine Liste von Ganzzahlen sortiert und nicht Zeichen.

Java-Anwendungen benötigen speziele Laufzeitumgebung, die man für das entsprechende Betriebssystem installieren muss. Die nennt sich JRE (java runtime environment).

Dann gibt es für java sogenannte SDKs (Software development kit) bzw. JDK (java development kit) von den entwickerln von java selbstgemachte SDK.

Das enthält neben der JRE noch eine IDE (Anwendung in der du dein Source-code schreiben kannst) und ein compiler, der meist direkt über die IDE verwendet wird wenn du daraus bytecode generieren willst.

Der Vorgang ist der. Sourcecode wird kompiliert => bytecode. Dieser kann dann von der JRE , die auf dem rechner als dienst läuft ausgeführt werden.

Wenn du nach JDK-SDK suchst oder java sdk wirst du denke ich einige angebote finden.


melden

Mergesort Processing

19.04.2010 um 18:49
@roadricus
@moredread
ich will die buchstaben des namens caroline sortieren. mit den programm processing

der funktioniert mit den obigen code....doch weiß ich jetzt nicht was ich denn einsätze...damit es diese buchstaben sortiert


melden

Mergesort Processing

19.04.2010 um 19:16
Was genau ist das Problem?

Um jetzt die Buchstaben im Namen zu sortieren, machst du aus dem Namen ein char-Array, s.d. bei jedem Index genau ein Buchstabe steht.

Dann rufst du mit diesem Array die Funktion auf... l ist am Anfang 0, r ist "Buchstabenanzahl-1".


PS: Ich denke mal, du hast den Code hierher:
http://www.linux-related.de/index.html?/coding/sort/sort_merge.htm (Archiv-Version vom 20.03.2011)

Die HTML-Formatierung hat leider den merge-Teil komplett verschwinden lassen.


melden

Mergesort Processing

19.04.2010 um 19:27
@Tommy137
genau richtig, da hab ichs her.

:D hallo ich hab null plan davon, ich frag ja euch nach hilfe :P


melden

Mergesort Processing

19.04.2010 um 19:38
Wie bereits erklärt. Was du da hast ist kein Programm sondern nur ein Programm-Code in der Programmiersprache "Java". Um genau zu sein eine Funktion, die beliebige listen aus ganzzahlen mit dem Algorythmus "merge" sortiert. Du musst natürlich noch an eine Möglichkeit denken, Werte an diese Funktion zu übergeben. Und am

Damit es zu einem "Programm" wird muss man es am Ende compilieren. Der damit erzeugte Bytecode kann dann von einer JRE interpretiert/ausgeführt werden - welche man einfach downloaden und installieren kann (hat fast jeder automatisch, der mal ne Java-Anwendung benutzt hatte).


Worum genau geht es dir eigendlich? Einfach nur das Ergebnis? Wenn ja, warum dann unbedingt mergeSort und warum überhaupt mit source-code und nicht einfach eim fertigen Programm? Es gibt auch sicher genug online-tools die das machen. Lässt sich mit JavaScript oder PHP relativ schnell zusammenkleistern.


melden

Mergesort Processing

19.04.2010 um 19:40
@Tommy137

hat Java überhaupt char-array? Ich habe das extra ausgelassen - in c/c++ wär das ja klar. Habs leider nicht so mit Java, auch wenn ich insgesammt weiss was es damit auf sich hat ;P


1x zitiertmelden

Mergesort Processing

19.04.2010 um 19:40
bzw ich meine grundsätzlich den type "char"


1x zitiertmelden

Mergesort Processing

19.04.2010 um 19:44
es geht mir ums verständnis und mergesort deshalb, da wir das im unterricht durch genommen hatten.

naja also ich dachte das dieser code in den programm processing laufen würde, wir haben damit bis jetzt immer gearbeitet.

ich kenne kein anderes. würde das gerne da weiter machen.

@roadricus

das ergebnis würde mich schon interessieren damit ich auch mal seh wo was eingebaut wurde um die buchstaben zu sortieren


2x zitiertmelden

Mergesort Processing

19.04.2010 um 19:44
Zitat von roadricusroadricus schrieb:hat Java überhaupt char-array?
Zitat von roadricusroadricus schrieb:bzw ich meine grundsätzlich den type "char"
Ja... beides.


Wobei heir ja immer von "Processing" die Rede war und nicht von Java... das soll zwar darauf aufbauen, aber hat wahrscheinlich ne leicht geänderte Syntax.


melden

Mergesort Processing

19.04.2010 um 19:51
Zitat von kisakisa schrieb:naja also ich dachte das dieser code in den programm processing laufen würde, wir haben damit bis jetzt immer gearbeitet.
Keine Ahnung, wie gut jetzt deine Kenntnisse im Ungang mit dem Programm bzw. allgemein mit dem Aufbau solcher Programme ist...

Dieser mergesort-Teil ist erstmal so kein selbstlaufendes Programm, sondern nur eine Funktion. Du musst also erstmal eine Hauptroutine selbst schreiben, die je nach Programmiersprache unterschiedlich, aber für jdes Programm dann gleich ist.

In diesem Hauptteil rufst du dann die Funktion "mergesort" mit den entsprechenden Parametern auf (das Array, in dem die Buchstaben stehen, sowie die Grenzen).


melden

Mergesort Processing

19.04.2010 um 19:59
void mergesort(int a[c], b[e], int l, int r){ //l=linker Rand, r=rechter Rand
if(r>a){
int c, a, r, o, l, i, n, e; //Variablen deklarieren

bis hierhin erstmal....ist sowieso falsch....aber ich weiß nicht wirklich was ihr mir versucht zu erklären ;) ich bin doch ein anfänger...und kann mit meinen informatik schul wissen nicht grade punkten.
________________________
m=(r+l)/2; //Mitte ermitteln
mergesort(a, l, m); //linke Teildatei
mergesort(a, m+1, r); //rechte Teildatei
for(i=m+1; i>l; i--) b[i-1]=a[i-1]; //linke Teildatei in Hilfsarray
for(j=m; j for(k=l; k<=r; k++)
a[k]=(b }
}


1x zitiertmelden

Mergesort Processing

19.04.2010 um 20:02
Zitat von kisakisa schrieb:ist sowieso falsch
Allerdings ;) Die ganze mergesort-Funktion musst du ohne Änderung übernehmen.

Das ist ja wie gesagt dann auch nur ein Teil des ganzen Programms.



Kopier doch mal ein anderes Programm, dass ihr schon mal benutzt habt, hier rein. Dann sollte man eigentlich den Aufbau von Processing erkennen können.


melden

Mergesort Processing

19.04.2010 um 20:21
öhm okay moment

das war ein beispiel was wir mal in processing gemacht haben:

//erster Funktionstest: Rechteck und Linie
size(400, 250);
rect(150,80,100,100);
line(50,50,350,200);
//zweites Programm: 300 zufällige Linien
size(600,400);
for (int i=0; i<300; i++){
line(random(width), random(height), random(width), random (height));
}

//drittes Programm: 500 zufällige Linien mittig gewichtet
size(600, 400);
background(255);
stroke(0, 50);
strokeWeight(2);
smooth();
for (int i=0; i<500; i++){
line(random(height/4, height *3/4),
random(height/4, height*3/4));}


wars das was du wolltest?


melden

Mergesort Processing

19.04.2010 um 20:21
@Tommy137


melden

Mergesort Processing

19.04.2010 um 20:25
Ok Processing ist kein Programm sondern eine Programmiersprache. Sieht aber aufm ersten blick wie Java aus. Das kommt halt davon wenn man kaum Infos kriegt und dann raten muss:

Wikipedia: Processing


melden

Mergesort Processing

19.04.2010 um 20:29
Ja, das scheint doch sehr spezialisiert für Grafikanwendungen zu sein... nicht wirklich geeignet für einen Sortieralgorithmus.


@kisa

Habt ihr auch mal irgendwas anderes gemacht, als damit Sachen zu zeichnen?


melden

Mergesort Processing

19.04.2010 um 20:32
@Tommy137
@roadricus
das war das einzige was wir damit gemacht haben.... da die codes die ich da gefunden habe denen ähnelte dachte ich mir ich wäre da auf der sicheren seite -.-


melden

Mergesort Processing

19.04.2010 um 20:34
@kisa

Wie sesagt... das ist auch nur ein Teil, zwar der wichtigste, aber es reicht nicht aus.

Du musst noch etwas dazuschreiben, um dein Array aus Buchstaben zu erstellen, die Funktion mergesort aufzurufen und das Ergebnis auszugeben.

Und das ist von Programmiersprache zu Programmiersprache verschieden.


melden

Mergesort Processing

19.04.2010 um 20:40
In c++ müsste man nicht mal ein char-array machen. Die string klasse ist iterierbar. Und aus den einzelnen Zeichen könnte man den charcode rausfinden. Es ist aber ziemlich unsicher. bei ascii würde es bei groß- und kleinbuchstaben funktionieren (unabhängig von einander), wenn man die aber mischt würde die sortierung nicht mehr hinhauen.


melden

Mergesort Processing

19.04.2010 um 20:43
@Tommy137
ich hab aber keine ahnung was :(

@roadricus
und was ist das schon wieder :D

ich versteh hier noch nichtmal die hälfte ich wollte doch nur ein praktisches beispiel >,<


melden