Was bedeutet dieser ausdruck?

spyke

Mitglied
Java:
/**
public class sortieren {

  // Anfang Attribute
  // Ende Attribute



  // Anfang Methoden
  public static void main(String[] args) {

         int anz = 1000;
         int [] zahlen = new int [1000];
         int temp;
  
    for (int i=0; i<anz; i++){
    zahlen [i] = (int) (Math.random()*90+10);
    }

    for (int i=0; i<anz-1;i++){
    for (int k=0; k<anz-1;k++){
    if (zahlen[k]>zahlen[k+1]) {

    temp = zahlen[k];
    zahlen[k] = zahlen[k+1];
    zahlen[k+1] = temp;
     }

     }
}
for (int i=0; i<1000;i++) {
  System.out.println(zahlen[i]);
}
}
  // Ende Methoden
}

Kann mir jemand sagen was das bedeutet?

Java:
for (int i=0; i<anz-1;i++){
    for (int k=0; k<anz-1;k++){
    if (zahlen[k]>zahlen[k+1]) {
also eine for schleife geht die Zahlen von 0 - 1000-1
die 2te genauso
was heißt: zahlen[k]? Werden die Zahlen von 0 - 1000-1 im "zahlen[k]" gespeichert?
 
Der Code, so wie er da steht, macht nicht wirklich Sinn. Sieht aber ein wenig nach BubbleSort aus. Das i muss irgendwie in die Bedingungen der 2. Schleife einfließen. Vermutlich so:
Code:
k<anz-1-i
 
das k ist lediglich der index, welchen du in deinem programm von 0-999 gewählt hast..
mit zahlen[k] greifst du auf den index zu, und somit auf die zahl, die an diese stelle steht..

wenn deine random folgende 5 zahlen generiert hast:
99,5,12,75,1

Dann steht an zahlen[0]=99
und an zahlen[4]=1
 
zahlen[k] ist dein k.tes Element aus dem Array
Code:
zahlen
.
Mal angenommen du hast 1000 Zahlen, also würden die Schleifen 999 mal die ersten 999 Einträge durchgehen und das Maximum davon nach ganz rechts bringen.
 
Hey

Zuerst mal Klassennamen sollte man gross schreiben und der Code ist schlecht formatiert. (tut mir leid).
Nun zu deiner Frage:
Die Syntax array[index] bescreibt den wert der Liste an der Stelle des Indexes, diese Syntax kann wie eine Variable verwendet werden, d.h. du kannst mit dem Wert rechnen usw. und eben auch einen neuen Wert abspeichern.

Der Code in der inneren for-Schleife (mit k) macht folgendes:
Er geht die liste durch und wenn der Wert des aktuellen indexes grösser als der folgende ist, werden sie getauscht. Dies wird (mit der äusseren for-Schleife soviel mal gemacht wie die liste lang ist) dadurch ist sie nachher sortiert.

Bsp.
{0,2,3,5,1,8}
1. Schritt (bezeichnet die durchläufe der äusseren for-Schleife): {0,2,3,1,5,8}
2. Schritt: {0,2,1,3,5,8}
3. Schritt: {0,1,2,3,5,8}
und die Liste ist sortiert.

Wie man sieht ist die maximale Anzahl Schritte gleich der Listenlänge (wenn das kleinste Element gerade zuäusserst ist).
 
Nicht die Maximale Anzahl an Schritten, sondern Anzahl an Schritten. Die Abbruchbedingungen stimmen nicht, deswegen würde man in deinem Beispiel 5 Mal die Liste durchlaufen. Außerdem sollte Bubblesort aufhören, sobald er in einem Schritt nichts getauscht hat
 
Hey

Zuerst mal Klassennamen sollte man gross schreiben und der Code ist schlecht formatiert. (tut mir leid).
Nun zu deiner Frage:
Die Syntax array[index] bescreibt den wert der Liste an der Stelle des Indexes, diese Syntax kann wie eine Variable verwendet werden, d.h. du kannst mit dem Wert rechnen usw. und eben auch einen neuen Wert abspeichern.

Der Code in der inneren for-Schleife (mit k) macht folgendes:
Er geht die liste durch und wenn der Wert des aktuellen indexes grösser als der folgende ist, werden sie getauscht. Dies wird (mit der äusseren for-Schleife soviel mal gemacht wie die liste lang ist) dadurch ist sie nachher sortiert.

Bsp.
{0,2,3,5,1,8}
1. Schritt (bezeichnet die durchläufe der äusseren for-Schleife): {0,2,3,1,5,8}
2. Schritt: {0,2,1,3,5,8}
3. Schritt: {0,1,2,3,5,8}
und die Liste ist sortiert.

Wie man sieht ist die maximale Anzahl Schritte gleich der Listenlänge (wenn das kleinste Element gerade zuäusserst ist).

Und wie geht es weiter mit der if schleife?
Java:
for (int i=0; i<anz-1;i++) {
    
      for (int k=0;k<anz-1;k++) {
      
       if (zahlen[k]>zahlen[i]){
        temp=zahlen[k];
        zahlen[k]=zahlen[k+1];
        zahlen[k+1]=temp;

was sind jetzt zahlen[k] und zahlen?
 
if-schleife.de
Code:
zahlen[i]
steht doch gar nicht in deinem ursprünglichem Code...
Wenn da wie vorher k+1 steht, dann:
- Wert mit dem Nachbar vergleichen und das größere Element nach rechts bringen.
Spiele doch den Algo auf einem Zettel mit einem {5,3,7,2,1,9,0} array durch.
 

Zurück
Oben