Moin Leude,
Ich muss gerade was für die Informatikklausur an der Uni programmieren
und wollte einen Sortieralgorithmus programmieren. Leider weiß ich nicht
welchen Typ dieser hier entspricht. Ist das ein selection sort
algorithmus?
#include <stdio.h>
int main()
{
int hilf1,hilf2,i,k;
int array[10]={4,7,2,8,6,3,5,9,0,1};
for(k=0;k<10;k++){
for(i=0;i<10;i++){
if(array[k]<array[i]){
hilf1=array[k];
hilf2=array[i];
array[k]=hilf2;
array[i]=hilf1;
}} }
int j;
for(j=0;j<10;j++){
printf("%i", array[j]);
}
return 0;
}
Vielen dank im vorraus!
Joachim M. schrieb:> und wollte einen Sortieralgorithmus programmieren.
So ohne irgendwelche Anforderungen? Sehr seltsam.
Joachim M. schrieb:> Ist das ein selection sort algorithmus?
Kannst du das nicht er-wikipedia-en, ob dein Code auf die Beschreibung
da passt?
Bubblesort braucht immer 2 Schleifen die ineinander verschachtelt sind
und eine Puffer_variable für jedes Feld.
Bubblesort heißt deshalb so weil der Wert solange nach vorne gesetzt
wird, wie er kleiner ist, als der Wert der vor ihm ist. Er steigt also
auf wie eine Bubble (Blase).
Ergo ist dein Code ein Bubble-sort (wenn er funktioniert).
Bubblesort ist übrigens der sicherste Sortiercode aber auch der
langsamste.
Schlaumaier schrieb:> Bubblesort heißt deshalb so weil der Wert solange nach vorne gesetzt> wird, wie er kleiner ist, als der Wert der vor ihm ist.
GRÖSSER natürlich. Man ich sollte pennen gehen. 16 Std. am Stück am PC
sind zu viel.
Joachim M. schrieb:> Ist das ein selection sort> algorithmus?
Definitiv nicht. Dieser wuerde in jedem Schritt das kleinste Element aus
den verbleibenden suchen, und dieses dann mit einer Vertauschung an den
Anfang bringen, und dann auf den verbleibenden weiter machen.
Dies ist eher Bubble Sort ohne fruehzeitigen Abbruch wenn bereits alles
sortiert ist.
ZigZeg
Joachim M. schrieb:> Wie kann man einen geeigneten Abbruch den einfügen in dem Fall jetzt?
Wenn nichts getauscht wurde - also der if-Zweig nicht ausgeführt wird.
#include <stdio.h>
int main()
{
int hilf1,hilf2,i,k;
int array[10]={14,17,12,18,6,13,5,19,0,1};
for(k=0;k<10;k++){
for(i=0;i<10;i++){
if(array[k]>array[i]){
hilf1=array[k];
hilf2=array[i];
array[k]=hilf2;
array[i]=hilf1;
}
break;
}}
int j;
for(j=0;j<10;j++){
printf("%i ", array[j]);
}
return 0;
}
So hatte ich das jetzt verstanden. Das funktioniert aber nicht.
Schlaumaier schrieb:> Bubblesort ist übrigens der sicherste Sortiercode aber auch der> langsamste.
Korrekt. Wir wir alle wissen sind schnellere Algorithmen generell
unsicher..
Slow seems save!
Joachim M. schrieb:> Wie kann man einen geeigneten Abbruch den einfügen in dem Fall jetzt?
Warum willst du irgendwas abbrechen? Die unnötigen Vergleiche kannst du
noch rausschmeißen: Nach n Durchläufen der äußeren Schleife sind die
ersten n Elemente bereits an der korrekten Position. Wie man die innere
Schleife verbiegen muss, damit das nicht immer wieder von vorne
überprüft wird, findest du selbst raus. Es steht ansonsten auch in jeder
Implementierung.
Außerdem ist der Tausch mit zwei Hilfsvariablen unnötig, eine tut's
auch. Eigentlich ergibt sich das alles, wenn du eine beliebige
Bubblesort-Implementierung anschaust.
Schlaumaier schrieb:> Bubblesort ist übrigens der sicherste Sortiercode aber auch der> langsamste.
Wuff. Normalen Menschen würde das Gehirn explodieren, wenn sie so einen
Unfug schreiben würden, aber bei dir scheint da keine Gefahr zu
bestehen.
Deswegen werde ich wahrscheinlich auch kein Informatiker...
Das mit der Abbruchbedingung hab ich aber immer noch richtig verstanden
wie man die hier einbringen kann.
Joachim M. schrieb:> So hatte ich das jetzt verstanden. Das funktioniert aber nicht.
Wenn der if-Zweig in der inneren Schleife nicht mehr ausgeführt wird.
Einmal reicht nicht.
Du musst dir merken, ob er ausgeführt wurde - ja, da brauchst du eine
zusätzliche Variable.
#include <stdio.h>
int main()
{
int hilf1,hilf2,i,k;
int
array[20]={14,17,12,18,6,13,5,19,0,1,56,77,88,99,22,34,56,76,11,119};
for(k=0;k<20;k++){
for(i=k;i<20;i++){
if(array[k]>array[i]){
hilf1=array[k];
array[k]=array[i];
array[i]=hilf1;
}
}
}
int j;
for(j=0;j<20;j++){
printf("%i ", array[j]);
}
return 0;
}
Habe ich das so ganz gut umgesetzt oder gibt es da noch immer Punkte die
den Code sehr ineffizient machen?
Danke für die Hilfe!
Joachim M. schrieb:> Das mit der Abbruchbedingung hab ich aber immer noch richtig verstanden> wie man die hier einbringen kann.
Lies den Wikipedia-Artikel. Für das Ergebnis ist das hier aber
irrelevant und der asymptotische Aufwand ändert sich auch nicht, nur die
Best-Case-Laufzeit.
Bei Fragen der Art "Wie funktioniert Algorithmus X und wie implementiert
man das?" ist der Cormen im Studium dein Freund, vielleicht auch noch
darüber hinaus.
In meiner Jugend gab es noch Bücher. Das Standardwerk dazu war
"Algorithmen und Datenstrukturen" von einem gewissen Niklaus Wirth. (Der
hat dann auch noch die Sprachen Pascal und Modula (und weitere)
entwickelt.)
In dem Buch sind auf 50 Seiten (77-145) die verschiedenen
Sortieralgorithmen gegenüber gestellt.
Vielleicht findet sich ja noch ein Exemplar in einer Uni-Bibliothek,
oder einem Antiquariat.
Mir hat es damals sehr geholfen.
Zeig mir doch mal einer einen Bubble-sort wo so mit den beiden
Schleifenindices getauscht wird:
for(k=0;k<10;k++){
for(i=0;i<10;i++){
if(array[k]<array[i]){
hilf1=array[k];
hilf2=array[i];
array[k]=hilf2;
array[i]=hilf1;
Das ist nie und nimmer ein Bubble Sort. Ob dieses Konstrukt wirklich
funktioniert oder nur zufällig bei den gewählten Zahlen habe ich mir
nicht mehr genauer angeschaut.
Nimm eine gequirlte Zahlenmenge, stelle sie graphisch in excel dar,
sortiere, das Ergebnis wieder graphisch darstellen. Ist das so
schwierig?
Dann kannst die deine Sortierverfahren nach Qualität bewerten.
Joachim M. schrieb:> Was genau würde das denn deiner Meinung nach bringen?> ALso ich binabsoluter anfänger:D
Er spart Vergleiche auf 0<0 bzw 10<10 damit ein.
mh schrieb:> Wie genau definierst du sicher?
Einfach und schnell zu schreiben. Geht mit wenigen Zeilen Code.
Sicher = Weniger Code = Weniger potenzielle Fehlerquellen.
Ich kann ihn (als einzigen) schon seit 20 Jahren auswendig.
Ich hatte mal einen anderen probiert der war ca. 40% schneller aber hat
mich 2 Tage gekostet ihn anzupassen.
Und was auch das Sicher macht. Schonmal mit array-Sort bei VB
gearbeitet. Das ist so schrottig das es sogar die Hilfe zugibt.
Bei den Bubblesort muss man nur darauf achten das bei Texten die selbe
Codepage + die selbe Buchstabengröße benutzt wird. Deshalb empfehle ich
immer ein Vergleich mit LCASE - Funktion(alles in Kleinbuchstaben), wenn
nix anders explizit gefordert wird.
Fast alle Programmiersprachen sehe da nämlich ein Unterschied weil die
Sortierreihenfolge nach der geltenden ASCII-Tabelle
(Locations-Einstellungen) durchgeführt wird.
Ist aber nur wichtig wenn man kein AMI ist. ;) ÄÖÜ sind nämlich öfters
mal woanders, in der Tabelle.
Joachim M. schrieb:> Wie kann man einen geeigneten Abbruch den einfügen in dem Fall jetzt?
Mit einen EXIT-FOR oder in den man (unelegant aber geht) den
Schleifenwert über die den Max-wert der Schleife stellt.
Also ich habe keine Ahnung vom Programmieren @Udo aber das sortieren
funktionier für verschiedene Zahlen und auch Anzahlen an Zahlen habe ich
variiert. Dafür dass mir gesagt wurde dass es ja so leicht mit dem
Wikipediaartikel wäre passen die Meinungen hier aber nicht ganz.
Aber @Udo du kannst den Code gerne ausprobieren und mir dann sagen
welchen Sortiertyp das entspricht. Das war ja meine ursprüngliche frage.
for(k=0;k<20;k++){
for(i=k;i<20;i++){
Vergleicht als erstes [0] mit [0] ist nicht übermäßig sinnvoll.
Beim zweiten Durchlauf von k ist der erste Vergleich [1] ? [1]
Bei den folgenden Durchläufen sieht es gleich aus.
Der letzte Durchlauf vergleicht [19] mit [19] ist auch nicht der
Bringer.
Deshalb mein Vorschlag:
for(k=0;k<19;k++){
for(i=k+1;i<20;i++){
siehe auch mein Tip von 16:43
muss aber nicht sein;-)
Schlaumaier schrieb:> Bubblesort heißt deshalb so weil der Wert solange nach vorne gesetzt> wird, wie er kleiner ist, als der Wert der vor ihm ist. Er steigt also> auf wie eine Bubble (Blase).
Auf alten Maschinen mit ihren bescheidenen Taktfrequenzen konnte man das
sogar schön sehen, wenn man Textzeilen auf dem Bildschirm sortiert hat.
Vielleicht geht das auch heute noch, wenn man mal einen Bubblesort für
den Makro-Interpreter der Textverarbeitung schreibt.
Schlaumaier schrieb:> Bubblesort ist übrigens der sicherste Sortiercode aber auch der> langsamste.
Langsam ist er, aber "sicher" ist das falsche Attribut. Das Gegenteil
wäre "unsicher", und das kann eigentlich nur wegen eines
Progammierfehlers oder Hardwaredefekts passieren.
Der Bubbelsort ist aber ein stabiler Sortieralgorithmus, was bedeutet,
dass zwei gleiche Elemente in ihrer ursprünglichen Reihenfolge stehen
bleiben.
Es gibt auch (schnellere) Sortierverfahren, bei denen nicht garantiert
ist, dass die Reihenfolge gleicher Elemente nicht verändert wird.
Auf den ersten Blick scheint es gleichgültig zu sein, ob die
ursprüngliche Ordnung gleicher Elemente erhalten bleibt, aber das ist
nicht so:
Angenommen man möchte folgendes numerisch sortiertes Telefonverzeichnis
nach Namen und Vornamen sortieren:
1
Zeile, Name, Vorname, Nebenstelle
2
1, Hoffmann, Harald, 114
3
2, Heimermann, Dirk, 161
4
3, Faßbender, Eva, 176
5
4, Felderhoff, Stefanie, 314
6
5, Faller, Carolin, 336
7
6, Hoffmann, Marlies, 409
8
7, Heinen, Roswitha, 445
9
8, Falkenburg, Eva, 449
10
9, Hoffmann, Kerstin, 485
11
10, Heimann, Sascha, 629
Dazu wird man zunächst die Vornamen sortieren, wobei es gleichgültig
ist, in welcher Reihenfolge die Nachnamen kommen.
Man kann dafür also das schnellste verfügbare Sortierverfahren
verwenden. Bei sehr grossen Datenbeständen kann das einen erheblichen
Zeitunterschied bedeuten. Es gibt sogar Verfahren, die erst einmal den
ganzen Datenbestand dahingehend überprüfen, ob er bereits in irgend
einer Weise vorsortiert ist, und danach entscheiden, welche
Sortieralgorithmen verwendet werden.
Mit einem Algorithmus, der die Quelle Zeile für Zeile von vorn liest,
und den Datensatz in die
Zielliste einfügt, !sobald das möglich ist!, erhalten wir nach und nach
folgende Kette :
Die nach Vornamen sortierte Liste lautet nun also:
1
5, Faller, Carolin, 336
2
2, Heimermann, Dirk, 161
3
8, Falkenburg, Eva, 449
4
3, Faßbender, Eva, 176
5
1, Hoffmann, Harald, 114
6
9, Hoffmann, Kerstin, 485
7
6, Hoffmann, Marlies, 409
8
10, Heimann, Sascha, 629
9
4, Felderhoff, Stefanie, 314
10
7, Heinen, Roswitha, 445
Beachte, dass die beiden Evas jetzt die Plätze getauscht haben, diese
Sortierung ist also nicht stabil!
Das ist hier aber unerheblich, da die im nächsten Schritt erfolgende
Sortierung nach Familiennamen Vorrang hat.
Ab hier muss ein stabiles Sortierverfahren verwendet werden, da sonst
die (hier zufällig bereits richtig) vorsortierten Hoffmänner
durcheinander geraten könnten. Nach dem obigen instabilen
Sortierverfahren wäre deren Reihenfolge nämlich 6-9-1, was
offensichtlich zur falschen Reihenfolge der Vornamen führt.
Vor 50 Jahren, als Speicherplatz noch knapp und teuer war, selbst
Grossrechner hatten oft nur 512 Kilo(!)Byte RAM, und Magnetbänder das
(langsame) Speichermedium für grosse Datenmengen waren, hat man viel
Gehirnschmalz auf effiziente Sortierverfahren verwendet.
https://de.wikipedia.org/wiki/Sortierverfahrenhttps://en.wikipedia.org/wiki/IBM_System/370_Model_145
Es ist kein Fehler, sich an die damals erworbenen Kenntnisse zu
erinnern.
Schlaumaier schrieb:> Ich hatte mal einen anderen probiert der war ca. 40% schneller aber hat> mich 2 Tage gekostet ihn anzupassen.
Vorsicht! Beim Boublesort steigt die Laufzeit quadratisch mit der Anzahl
der Elemente an. Kann gut sein, das es bei Deinem Testfall nur 40%
Unterschied waren. Wie sieht es aber aus, wenn Du mal die Anzahl der zu
sortierenden Elemente mit Faktor 100 multiplizierst? Dann steht Deine
Kiste schnell mal für eine Sekunde oder länger. Wie sieht es bei Faktor
1000 oder 10000 aus?
Diese Algorithmen mit O(n²) Komplexität sind gefährlich, weil man beim
Test häufig nicht merkt wie drastisch langsam sie bei größeren
Datenmengen werden können.
Wenn Du weist, das Du wirklich nur eine Hand voll Werte sortieren
willst, dann sind solche billig Algorithmen tatsächlich häufig eine gute
Wahl. Wenn Du Dir aber nicht sicher bist, dann hat Dein Code eine
tickende Zeitbombe.
Die Zeit, die Du am Anfang in der Implementation sparst, sind nichts
gegen den Stress, den Du mit dem Kunden hast sobald dein Code nicht mehr
performt.
Und für die Embedded Neulinge: Auch Vorsicht mit Quicksort. Der
Stackbedarf kann mit der Anzahl der Elemente steigen. Passiert in der
Praxis selten, aber ich hatte schon Tester, die mit Quicksort Killer
Sequenzen angekommen sind und mir der Stack um die Ohren geflogen ist.
Seitdem setze ich eigentlich nur noch Heapsort ein. Das habe ich vor 25
Jahren ein mal vom Buch abgeschrieben (eine Stunde, keine zwei Tage) und
seitdem immer mal wieder in angepasster Form verwendet.
Nils schrieb:> ? Dann steht Deine> Kiste schnell mal für eine Sekunde oder länger. Wie sieht es bei Faktor> 1000 oder 10000 aus?
Keine Ahnung ab ca. 3-5000 Elementen aufwärts halte ich die sowieso
nicht mehr im Speicher. Dann lagere ich die in einen Datenbank aus, und
lasse sie mit "Order by was_ich_will" sortieren.
Der Grund ist. Habe ich so viele Elemente dann werden das zu 99% eh
mehr. Also gleich vernünftig auslagern, anstatt sein Speicher mit z.b.
DIM a(1000000) voll zu müllen.
Bubblesort reicht völlig aus, um kleinere Mengen an Daten zu sortieren,
wobei ich die meist nur für einen schönere Ansicht der Daten brauche.
User mögen es wenn sie die Daten sortiert angezeigt bekommen. Und da
kommt es sehr selten zu mehr als 100 Elementen.
Womit ich sogar zugebe das ich noch nie mehr als ca. 500 Elemente "per
programmierter Sortierroutine" bearbeitet habe.
Das Beispiel wo ich man 2 Tage dran gesessen habe war ein Job der ca.
12.000 Elemente sortieren sollte und wo ich keine Datenbank verwenden
sollte.
Der Kunde ist König, aber die Regierung hat selten Ahnung. ;)
Nils schrieb:> Seitdem setze ich eigentlich nur noch Heapsort ein.
Eine weitere gute Alternative ist Shellsort mit Ciura-Sequenz, was
schneller als Heapsort ist. Dafür hat Heapsort eine konstantere
Laufzeit.
Hallo Nils,
Nils schrieb:> Schlaumaier schrieb:>> Ich hatte mal einen anderen probiert der war ca. 40% schneller aber hat>> mich 2 Tage gekostet ihn anzupassen.>> Vorsicht! Beim Boublesort steigt die Laufzeit quadratisch mit der Anzahl> der Elemente an. Kann gut sein, das es bei Deinem Testfall nur 40%> Unterschied waren. Wie sieht es aber aus, wenn Du mal die Anzahl der zu> sortierenden Elemente mit Faktor 100 multiplizierst? Dann steht Deine> Kiste schnell mal für eine Sekunde oder länger. Wie sieht es bei Faktor> 1000 oder 10000 aus?>> Diese Algorithmen mit O(n²) Komplexität sind gefährlich, weil man beim> Test häufig nicht merkt wie drastisch langsam sie bei größeren> Datenmengen werden können.
Du hast vollkommen Recht, aber der Herr Schlaumeier veröffentlicht hier
einen unterirdischen Beitrag nach dem nächsten.
Wer von 40% Laufzeitgewinn spricht, der hat von Laufzeitklassen nichts
gehört. Auch die Begründung für minderwertige Algorithmen
"Sicher = Weniger Code = Weniger potenzielle Fehlerquellen."
ist hanebüchen.
Wer denn noch von DIM a(1000000) spricht, der benutzt auch REDIM.
Das alleine ist schon in O(n^2).
Bubble-Sort ist ein netter Sortieralgorithmus, geeignet für einen
VHS-Kurs, für mehr nicht. Aber wenn der Erkenntnisprozess nicht da ist,
kann man auch mit einer Parkuhr sprechen, das ist auch folgenlos.
[...
Der Grund ist. Habe ich so viele Elemente dann werden das zu 99% eh
mehr. Also gleich vernünftig auslagern, anstatt sein Speicher mit z.b.
DIM a(1000000) voll zu müllen.
...]
Große Probleme kann er auch nicht sortieren, dass muss dann die
Datenbank für ihn tun:
[...
Keine Ahnung ab ca. 3-5000 Elementen aufwärts halte ich die sowieso
nicht mehr im Speicher. Dann lagere ich die in einen Datenbank aus, und
lasse sie mit "Order by was_ich_will" sortieren.
...]
Diese erste Version
Joachim M. schrieb:> int main()> ...
ist im Wesentlichen ein deoptimierter¹ Insertion-Sort, die zweite
Version
Joachim M. schrieb:> int main()> ...
im Wesentlichen ein deoptimierter Selection-Sort.
Das erkennt man leicht, wenn man sich in jedem Durchlauf der äußeren
Schleife den Zwischenstand des Array-Inhalts anschaut.
Korrekt sind beide Algorithmen, im Vergleich zu den jeweiligen
Originalen werden aber mehr Vergleiche und Vertauschungen benötigt.
Wie Udo bereits schrieb, hat das Ganze mit dem Bubble-Sort nichts zu
tun. Beim Bubble-Sort werden immer nur benachbarte Array-Elemente (also
array[i] und array[i+1]) verglichen und ggf. vertauscht. Das ist hier
definitiv nicht der Fall.
¹) Ich wollte das Wort "verhunzt" vermeiden ;-)
Peter M. schrieb:> Wer denn noch von DIM a(1000000) spricht, der benutzt auch REDIM.> Das alleine ist schon in O(n^2).
Bei gewissen Programmiersprachen muss man JEDE Variable mit DIM
deklarieren es sei denk man schaltet diese ab. Was aber kein 'Feine
Programmierstil' ist.
DIM variablen_name as TYP. Ist halt standard. REDIM gibt es glaub ich
nicht einmal mehr.
Peter M. schrieb:> Große Probleme kann er auch nicht sortieren, dass muss dann die> Datenbank für ihn tun:
Kann er schon. Aber ich bevorzuge halt eine einfache und übersichtliche
Methode. Und es ist einfacher und schneller eine SQL-Abfrage über eine
Funktion laufen zu lasen als ein großes Array mit For-Next durchsuchen
zu wollen.
Und wenn ich schon ein Array machen muss, dann mache ich das nicht zum
vergnügen sondern weil es sein muss.
Und bitte verwechsle Daten-Array nicht mit Typen-Array. Solche
Typen-Array brauche ich z.b. für eine Perfekte REZIZE-Funktion des
Frames. Einfach gesagt sobald du mehr als 640x480 Bildpunkte hast wird
das Frame immer perfekt auf den Bildschirm dargestellt. Und das sogar
unter Android ohne das ich dazu Klimmzüge machen muss. ;)
Ich denke eher deine Programmierkenntnisse sind sehr veraltet oder nur
für billige Script-Sprachen.
Joachim M. schrieb:> Ich muss gerade was für die Informatikklausur an der Uni programmieren> und wollte einen Sortieralgorithmus programmieren. Leider weiß ich nicht> welchen Typ dieser hier entspricht.
Lässt Du Hausaufgaben vom "Schwarmwissen" erledigen?
Du "programmierst" einfach mal so etwas und fragst dann, was Du
programmiert hast?
Joachim M. schrieb:> vorraus
Uni-Niveau?
Zunächst mal: Deine Formatierung (Einrücken) ist subotimal. Verwende
bitte zum darstellen die c-Tags. Auch ist es für den Optimierer besser,
wenn die Variablen dort definiert werden, wo sie gebraucht werden.
Ok, spielt jetzt bei dem Beispiel keine große Rolle. Aber: Es reicht
eine Hilfsvariable aus, du brauchst keine 2!
Ah ok jetzt habe ich verstanden wie ich das machen soll. Vielen dank auf
jeden Fall das war sehr hilfreich.
Nein das sind nicht meine Hausaufgaben und ich versuche hier gerade die
Tutorenstunden, welche es ja dank Corona nicht gibt, zu ersetzen.
Wenn man sich in einem Punkt festgefahren hat oder es einfach noch nicht
ganz verstanden hat. Hilft es Leute zu fragen die was davon verstehen.
Offensichtlich verstehen das manche hier nicht ganz.
Wenn ich einfach ein Code wollte könnte ich googlen. Oder wurde das
nicht bedacht?
Trotzdem gab es viele Leute die mir sehr geholfen haben das ein bisschen
besser zu verstehen.
Joachim M. schrieb:> Wenn man sich in einem Punkt festgefahren hat oder es einfach noch nicht> ganz verstanden hat. Hilft es Leute zu fragen die was davon verstehen.> Offensichtlich verstehen das manche hier nicht ganz.
Im nächsten Semester solltest du dich während des Semesters darum
kümmern und nicht erst kurz vor der Klausur. Die Pandemie ist hier ne
schlechte Ausrede.
Joachim M. schrieb:> Wenn ich einfach ein Code wollte könnte ich googlen. Oder wurde das> nicht bedacht?
Woher hast Du denn den Code? Ist er Dir im Schlaf eingefallen und jetzt
weißt Du nicht mehr, was Du gemacht hast?
Wenn Du Dir den Code selbst ausgedacht hättest wüsstest Du wohl, was Du
gemacht hast - oder?
witzigerweise habe ich mir ein Videos zu Quicksort anguckt und habe das
als Anfang gehabt. Und es hat funktioniert und deswegen wollte ich
wissen was ich da produziert habe. Eigentlich wars nur ein test.
Ja nächstes Semester bombadier ich euch während des Semsters mit fragen
dachte ich hätte das verstanden.
Joachim M. schrieb:> Ja nächstes Semester bombadier ich euch während des Semsters mit fragen> dachte ich hätte das verstanden.
Wende dich an deinen Prof, der wird dafür bezahlt.
Joachim M. schrieb:> witzigerweise habe ich mir ein Videos zu Quicksort anguckt und habe das> als Anfang gehabt. Und es hat funktioniert und deswegen wollte ich> wissen was ich da produziert habe.
Erzähl das mal Deiner Oma :-)
Joachim M. schrieb:> Ich dachte der Code war so schlecht? Was ist also so unwahrscheinlich> daran das ein Anfänger das falsche macht...
Deine Story ist einfach zu schlecht für einen guten Freitags-Troll.
Schlaumaier schrieb:> Und bitte verwechsle Daten-Array nicht mit Typen-Array. Solche> Typen-Array brauche ich z.b. für eine Perfekte REZIZE-Funktion des> Frames. Einfach gesagt sobald du mehr als 640x480 Bildpunkte hast wird> das Frame immer perfekt auf den Bildschirm dargestellt.
Bahnhof?
Was ist ein "Typen-Array"? Was ist der Unterschied zu einem
"Daten-Array"? Und was ist ein "perfektes Resize"? Und warum benötigt
man mehr als 640x480 Bildpunkte? Zum Sortieren?
> Und das sogar unter Android ohne das ich dazu Klimmzüge machen muss.
Bahnhof-Quadrat? Welche Klimmzüge? Für was?
> Ich denke eher deine Programmierkenntnisse sind sehr veraltet oder nur> für billige Script-Sprachen.
Oh je, mir schwant böses...
Joachim M. schrieb:> Ok wenn du meinst.
Ja, meine ich.
Jeder Dödel kann den Algorithmus mit Papier und Bleistift
nachvollziehen, wenn er das denn will und rudimentäre Kenntnisse der
Programmierung hat.
Wenn Du das nicht kannst wäre vielleicht eine Anstellung als
Facility-Manager o.ä. passender für Dich :-)
Oh - jetzt komme ich mir fast wie C-Hater vor ... nein, das bin ich
nicht.
Vlt. Programmierer werde ich sicher nicht. Offensichtlich habe ich noch
keine rudimentären Kenntnisse über das Programmieren. Wenn du nicht
helfen willst könntest du auch was besseres für die Menschheit machen
als mich hier so anzukacken und den Besserwisser raushängen zu lassen.
Wenn es so einfach ist hättest du deine Zeit dafür verwenden können mir
zu helfen.
Mehr als unnötige Kommentare schreiben ist ja offensichtlich nicht drin.
Joachim M. schrieb:> Vlt. Programmierer werde ich sicher nicht. Offensichtlich habe ich noch> keine rudimentären Kenntnisse über das Programmieren.
Dann hast Du Informatik als falsches Fach gewählt.
Joachim M. schrieb:> und wollte einen Sortieralgorithmus programmieren
Das ist offensichtlich nicht gerade Deine Kernkompetenz. Was willst denn
mal werden (Facility-Manager mal ausgenommen)?
Joachim M. schrieb:> Mehr als unnötige Kommentare schreiben ist ja offensichtlich nicht drin.
Doch - aber nicht für Menschen wie Dich :-)
Joachim M. schrieb:> Ingenieur nicht für info...
Nun, auch und gerade da muss man logisch denken können - oder?
Joachim M. schrieb:> int array[10]={4,7,2,8,6,3,5,9,0,1};> for(k=0;k<10;k++){> for(i=0;i<10;i++){> if(array[k]<array[i]){> hilf1=array[k];> hilf2=array[i];> array[k]=hilf2;> array[i]=hilf1;
Was genau passiert denn in "Deinem" Programm? Es werden immer 2 Werte
verglichen
if(array[k]<array[i])
und vertauscht, wenn der 2. Wert größer wie der 1. Wert ist. Für mich
ist das ein popliger Bubble-Sort.
Wenn ich falsch liege ist es halt so :-)
Dachte ich ja auch. Aber irgendwie wurden mir immer wieder gesagt es
wäre keiner. Aber wie gesagt ich kann nicht behaupten, dass ein
Bubblesort mein Ziel gewesen war.
Danke auf jeden Fall.
Yalu X. schrieb:> Vergleiche sie mit deinem Code, und du wirst feststellen, dass die> Leute, die behaupten, dein Code sei kein Bubble-Sort, recht haben.
Ich vermute, Du meinst mich damit.
Welcher genau ist es denn?
Yalu X. schrieb:> Besser ist es, selber zu recherchieren.>> Hier findest du mehrere Bubble-Sorts aus (vermutlich) voneinander> unabhängigen Quellen:>> https://de.wikipedia.org/wiki/Bubblesort> https://en.wikipedia.org/wiki/Bubble_sort> https://rosettacode.org/wiki/Sorting_algorithms/Bubble_sort
In der Zeit, die er hier vergeudet hat, hätte er sich Algorithmen und
Datenstrukturen von Wirth in seiner Uni-Bibliothek ausleihen und das
Kapitel über Sortieralgorithmen durcharbeiten können. Ich hab bei drei
Unis nachgeschaut, überall waren mehrere vorhanden und ausleihbar, auch
als rein digitale Version, für die man das Haus nichtmal verlassen muss.
mh schrieb:> In der Zeit, die er hier vergeudet hat, hätte er sich Algorithmen und> Datenstrukturen von Wirth in seiner Uni-Bibliothek ausleihen und das> Kapitel über Sortieralgorithmen durcharbeiten können.
Warum selber arbeiten, wenn einem in Forum die Hausaufgaben gemacht
werden? Das ist ja sicherlich nicht das einzige Forum, wo man seine
Fragen abstellen kann. Wenn Du das parallel mit 5 Foren machst, in jedem
Forum ein anderes Thema bearbeiten lässt, kommst Du schnell voran.
Ich habe ehrlicherweise noch nicht verstanden von was für Hausaufgaben
du redest? Hat dir jemand Hausaufgaben gegeben und dann wurden die
Kontrolliert?
Den Cormen habe ich tatsächlich gefunden und gedownloadet. Wirth
hingegen finde ich nicht.
>Keine Ahnung ab ca. 3-5000 Elementen aufwärts halte ich die sowieso
nicht mehr im Speicher. Dann lagere ich die in einen Datenbank aus, und
lasse sie mit "Order by was_ich_will" sortieren.
Dann wird das Ganze nie was. Vergiss Informatik, das hat keinen Sinn so.