public class Eimer
{
    private final int MAX = 100;      // Anzahl Elemente im Hauptarray
    private final int MAXWERT = 200;  // Wertebereich: 1..MAXWERT

    private int[] zahlen;

    public Eimer()
    {
        zahlen = ArrayTools.erzeugeArray(MAX);
        ArrayTools.fuelleArrayMitZufallszahlen(zahlen, MAX, 1, MAXWERT);

        System.out.println("Anzeigen des unsortierten Arrays");
        ArrayTools.zeigeArray(zahlen, MAX);

        bucketSortMitListe();

        System.out.println("\nAnzeigen des sortierten Arrays");
        ArrayTools.zeigeArray(zahlen, MAX);        
    }

 
    public void bucketSortMitListe()
    {
        final int BUCKETS = (MAXWERT / 10) + 1;

        // 1. Buckets anlegen: jeder Bucket ist ein eigenes Liste-Objekt
        Liste[] bucket = new Liste[BUCKETS];
        for (int i = 0; i < BUCKETS; i++)
            bucket[i] = new Liste();

        // 2. Zahlen in die Buckets einfügen
        for (int i = 0; i < MAX; i++)
        {
            int z = zahlen[i];
            int b = z / 10;
            bucket[b].fuegeEin(z);    // sortiertes Einfügen!
        }

        // 3. Buckets anzeigen (optional)
        for (int b = 0; b < BUCKETS; b++)
        {
            System.out.println("Bucket " + b + ":");
            bucket[b].zeigeAn();
            System.out.println();
        }

        // 4. Buckets in das Hauptarray zurückschreiben
        int index = 0;
        for (int b = 0; b < BUCKETS; b++)
        {
            for (int i = 0; i < bucket[b].anzahl; i++)
            {
                zahlen[index] = bucket[b].element[i];
                index++;
            }
        }
    }    

}