# HeapSort mit java.util.Random



## deiwid (10. Mai 2010)

Hey muss einen HeapSort machen der einen großen Array(n > 1000) mit Zahlen befüllt. Der Heap Sort funktioniert nur mit diesem Random habe ich so meine Probleme....hab gegoogelt jedoch nichts passendes gefunden.


Bitte um Hilfe!


```
import java.util.Arrays;

public class HeapSorter
{
    private int[] a;
    private int n;
    

    public void sort(int[] a)
    {
        this.a=a;
        n=a.length;
        heapsort(); und dann wird halt sortiert
    }

    public String toString() {
        return Arrays.toString(a); //gibt Array aus
    }
    
}
```


```
import java.util.Random;


public class Tester {

	public static void main(String[] args) {
		
		HeapSorter s = new HeapSorter();
		s.sort(new int[]{1, 45, 12, 22, 132, 2, 100000, 0, 34345, 5876});
		System.out.println(s.toString());
		
		
		//HeapSorter test = new HeapSorter();
		//test.sort(new int[]{ (int) Math.random()*100000});
		//System.out.println(test.toString());
		
		HeapSorter test = new HeapSorter();
		test.sort(new int[10000]);
	    Random random = new Random();
	    for (int i=0; i<test.length; i++)
	    {
	      System.out.println([random.nextInt(5)]);
```


----------



## Final_Striker (10. Mai 2010)

Du muss auch:

- Array erstellen
- Array mit Schleife durchlaufen und mit Zufallszahlen füllen
- Array an Heapsort übergeben

was du gemacht hast ist:

- Array erstellen
- Array mit Heapsort sortiert (wobei das Array sowieso nur mit 0 gefüllt war)
- Zufallszahlen in Konsole ausgeben


array[0] = randomNext(100000); // in das Feld 0 des Arrays wird einen Zufallszahl zwischen 0 und 99999 geschrieben ;-)


----------



## deiwid (10. Mai 2010)

danke für die schnelle Hilfe, jedoch kennt unterwellt mir eclipse randomNext; was er nicht akzeptiert.


```
HeapSorter test = new HeapSorter();
Random random = new Random();
   int[] a;    
    for (int i=0; i<10000; i++){
    	a[i] = randomNext(1000000);
    }
   test.sort(a);
  System.out.println(test.toString());
```


----------



## SlaterB (10. Mai 2010)

dir ist Java-Syntax und Programm-Sinnhaftigkeit an sich ungefähr klar?

randomNext(1000000);
wäre der Aufruf einer Methode der eigenen Klasse, die gewiss nicht vorhanden ist,
und das vorher erstellte Random-Objekt random wäre überhaupt nicht miteinbezogen,

nicht alles hier ins Forum eingetippte stimmt 100% Buchstabe für Buchstabe genau

jetzt überlege doch noch mal selber wie dieser einzelne Aufruf besser lauten könnte, 
wie du es früher vielleicht ähnlich schon hattest,
am besten irgendwas, was auch mit random direkt zu tun hat


----------



## Final_Striker (10. Mai 2010)

Sorry, muss natürlich nextInt() heißen. 



deiwid hat gesagt.:


> ```
> HeapSorter test = new HeapSorter();
> Random random = new Random();
> int[] a = new int[10];  // Array erstellen, ansonsten wäre dein a = NULL
> ...


----------

