Autor |
Beitrag |
Korni87
Hält's aus hier
Beiträge: 8
|
Verfasst: Mi 26.11.08 18:40
<<integer array sort>>=
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| static void bubble_sort( int[] array ) { long right_border = array.Length - 1;
do { long last_exchange = 0;
for (long i = 0; i < right_border; i++) { if (array[i] > array[i + 1]) { int temp = array[i]; array[i] = array[i + 1]; array[i + 1] = temp;
last_exchange = i; } }
right_border = last_exchange; } while (right_border > 0); } |
Bräcuhte dazu jeweils die Erklärung jeder Zeile was C-Sharp bei jedem Schritt ausführt.
Schonmal Vielen Dank!
Moderiert von Kha: C#-Tags hinzugefügt
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 26.11.08 19:25
Hallo und  im Forum!
Die Frage ist doch eher was du nicht verstehst. Irgendetwas wirst du ja vermutlich wissen, ohne konkrete Fragen ist es aber ja nicht möglich dir die Stellen zu erklären wo du Probleme hast.
So hört es sich eher nach einer Hausaufgabe an als nach einer Frage, weil du etwas nicht verstehst.
|
|
Korni87 
Hält's aus hier
Beiträge: 8
|
Verfasst: Mi 26.11.08 22:14
ne verstehe gar nix weil wir das neu haben in der schule und soll mit hilfe von foren usw. lösungen suchen.verstehe keine zeile.wäre nett wenn hinter jeder zeile die erklärung schreiben könntest;)
mfg
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 26.11.08 22:27
Hast Du Dir denn mal angesehen, wie BubbleSort generell arbeitet? Das ist bei Wikipedia eigentlich sehr gut erklärt: de.wikipedia.org/wiki/Bubblesort
Was den Quelltext angeht: Ihr müsst doch schon grundlegende Sprachelemente wie Schleifen und if-Abfragen gehabt haben. 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Korni87 
Hält's aus hier
Beiträge: 8
|
Verfasst: Mi 26.11.08 22:48
hm ja verstehe aber nicht genau was da passiert in den zeilen
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 26.11.08 22:55
Den Zusammenhang oder die einzelnen Zeilen selbst? Ich meine wenn da steht: C#-Quelltext 1:
| long last_exchange = 0; | Weißt du was da passiert?
Und kennst du do..while und for?
|
|
Korni87 
Hält's aus hier
Beiträge: 8
|
Verfasst: Mi 26.11.08 22:58
ja kenne do while und for.ne kp was in der zeile passiert
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 26.11.08 23:08
Also wenn du nicht einmal diese Zeile verstehst...
Das ist eigentlich so ungefähr das erste was man lernt. Es handelt sich um die Deklaration einer Variable mit gleichzeitiger Zuweisung eines Wertes.
Du wirst dir wohl erstmal die Grundlagen aneignen müssen...
|
|
Korni87 
Hält's aus hier
Beiträge: 8
|
Verfasst: Do 27.11.08 00:04
die schleifen kann ich aber was das heißt:1:
long last_exchange = 0;
kp
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 27.11.08 00:19
long ist ein Datentyp, genauso wie int und andere. Eine große Ganzzahl.
Mir dieser Zeile deklarierst du die Variable last_exchange und weist ihr den Wert 0 zu. Das heißt danach kannst du in last_exchange ganze Zahlen speichern.
|
|
Korni87 
Hält's aus hier
Beiträge: 8
|
Verfasst: Do 27.11.08 19:35
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 27.11.08 20:26
zuerst wird eine Variable temp deklariert. Die drei Zeilen insgesamt dienen dazu die Einträge i und i+1 im Array zu vertauschen. Nach dem Durchlauf ist alles hinter letzten Vertauschung, die mit der vierten Zeile in last_exchange gespeichert wird sortiert.
Danach wird die rechte Grenze des zu sotierenden berechs auf eben dieses last_exchange gesetzt und beim nächsten Durchlauf läuft die Schleife nur noch bis dorthin.
Durch die Vertauschungen schiebst du das größte Element immer nach rechts, und ab da wo keine Vertauschung mehr notwendig ist, sind die Elemente dann sortiert.
|
|
Korni87 
Hält's aus hier
Beiträge: 8
|
Verfasst: Fr 28.11.08 01:31
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 28.11.08 02:25
Erkläre du es doch soweit du selbst es verstanden hast  . Auch was den Ablauf insgesamt angeht. Das kann dann ggf. korrigiert oder ergänzt werden.
|
|
Korni87 
Hält's aus hier
Beiträge: 8
|
Verfasst: Sa 29.11.08 19:51
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 29.11.08 19:56
Nun ja, zuerst setzt du die Grenze des zu sortierenden Bereichs auf das letzte Element. Dann setzt du die letzte Vertauschung auf 0 und gehst in der for-Schleife das Array durch bis zum vorletzten Element (kleiner als right_border, nicht gleich right_border).
Wenn das Element größer ist als das nächste, dann werden die beiden vertauscht. Das größere der beiden ist jetzt also sozusagen rechts des kleineren. Und so soll es ja auch sein.
Geh einfach zeilenweise mit einem Beispielarray durch und überlege was passiert...
|
|