HeapSort mit java.util.Random

deiwid

Mitglied
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!

Java:
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
    }
    
}

Java:
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)]);
 
Zuletzt bearbeitet von einem Moderator:

Final_Striker

Top Contributor
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

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

Java:
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());
 
S

SlaterB

Gast
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

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

Java:
   HeapSorter test = new HeapSorter();
   Random random = new Random();
   int[] a = new int[10];  // Array erstellen, ansonsten wäre dein a = NULL
    
   for (int i=0; i< a.length; i++){ // über das Array laufen
    	a[i] = random.nextInt(100); // Zahlen von 0 bis 99
   }

   System.out.println("Davor: " + Arrays.toString(a));
   test.sort(a);
   System.out.println("Danach: " + Arrays.toString(a));
 

Oben