Helmichs Informatik-Lexikon

Bubblesort (extern)

Auf dieser Seite wird Ihnen gezeigt, wie man eine Bubblesort-Methode implementiert, die unabhängig von anderen Klassen benutzt werden kann und die jeden Array aus int-Zahlen sortiert:

public class Sorter
{
    private static void swap(int [] zahl, int index1, int index2)
    {
        int temp = zahl[index1];
        zahl[index1] = zahl[index2];
        zahl[index2] = temp;
    }

    public static void bubbleSort(int[] array)
    {
        for (int d = 1; d < array.length; d++)
            for (int index = 0; index < array.length-d; index++)
                if (array[index] > array[index+1])
                    swap(array,index,index+1);
    }
}

Dem Schlüsselwort static ist es zu verdanken, dass man jetzt aus jeder anderen Klasse direkt auf die bubbleSort()-Methode zugreifen kann. Hier ein kleines Anwendungsbeispiel:

import java.util.Random;

public class Liste
{
    public final int MAX = 100; 
    private int[] zahl;  

    public Liste()
    {
        zahl = new int[MAX];
    }

    private void erzeugen()
    {
     ...
    }

    private void anzeigen()
    {
      ...
    }
    
    public void testen()
    {
       erzeugen();
       anzeigen();
       Sorter.bubbleSort(zahl);
       anzeigen();
    }
}

Das Sortieren des Arrays findet jetzt nicht in der eigenen Klasse statt, sondern wird von der externen Methode bubbleSort() übernommen, der man den ganzen Array als Parameter übergibt. Da die bubbleSort()-Methode eine statische Methode ist, muss man kein Objekt der Klasse Sorter anlegen, damit man die Methode aufrufen kann. Ähnlich wie bei den Methoden der Klasse Math muss man lediglich den Namen der Klasse davorsetzen und kann dann direkt mit der Methode arbeiten.

Was bedeutet static?

Wenn eine Methode als static deklariert wird, gehört sie nicht zu einem einzelnen Objekt, sondern zur ganzen Klasse. Man kann sie also benutzen, ohne vorher ein Objekt der Klasse zu erzeugen. Das ist praktisch, wenn eine Methode nur etwas ausrechnen oder verarbeiten soll – wie beim Sortieren –, aber keine eigenen Daten (also keine Instanzvariablen) braucht.

Im Beispiel oben wird die Methode bubbleSort() mit dem Klassenamen Sorter aufgerufen: Sorter.bubbleSort(zahl); Das geht nur, weil die Methode static ist.

Ähnlich wie bei den Methoden der Klasse Math muss man lediglich den Namen der Klasse davorsetzen und kann dann direkt mit der Methode arbeiten.