Autor Beitrag
Korni87
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mi 26.11.08 18:40 
<<integer array sort>>=
ausblenden 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 user profile iconKha: C#-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 26.11.08 19:25 
Hallo und :welcome: 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. :nixweiss:

So hört es sich eher nach einer Hausaufgabe an als nach einer Frage, weil du etwas nicht verstehst.
Korni87 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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. :gruebel:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Korni87 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mi 26.11.08 22:48 
hm ja verstehe aber nicht genau was da passiert in den zeilen
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 26.11.08 22:55 
Den Zusammenhang oder die einzelnen Zeilen selbst? Ich meine wenn da steht:
ausblenden C#-Quelltext
1:
long last_exchange = 0;					
Weißt du was da passiert?
Und kennst du do..while und for?
Korni87 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mi 26.11.08 22:58 
ja kenne do while und for.ne kp was in der zeile passiert
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Do 27.11.08 00:04 
die schleifen kann ich aber was das heißt:1:

long last_exchange = 0;

kp
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Do 27.11.08 19:35 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
int temp = array[i];  
        array[i] = array[i + 1];  
        array[i + 1] = temp;  

 
        last_exchange = i;  
      }  
    } 

 
    right_border = last_exchange;


und dieser teil?

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Fr 28.11.08 01:31 
ausblenden 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:
25:
26:
27:
28:
 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);  
}



und das komplett zusammen?kannst das auch erklären, zur bestätigung?

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Sa 29.11.08 19:51 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
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])



sehe da irgendwie kein sinn hm

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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...