Mergesort

Status
Nicht offen für weitere Antworten.

Masteja

Mitglied
Hi kurze Frage wie kann ich bei meinem implementierten Mergesort das sortierte Array ausgeben lassen.




Code:
public class MergeSort 
{
	static int[] a;
	static int[] b;
	static int n;
	
	public void sort(int[]a)
	{
		this.a=a;
		n= a.length;
		b=new int[n];
		mergesort(0, n-1);
	}
	
	
	static void mergesort(int lo, int hi)
	{
		if (lo<hi)
		{
			int m=(lo+hi)/2; // Mitte bestimmen
			mergesort (lo, m);//sortieren obere Hälfte
			mergesort (m+1, hi);//sortieren untere Hälfte
			merge (lo, m, hi); //verschmelzen
			
		}
	
	}

	static void merge (int lo, int m, int hi)
	{
		int i, j, k;
		
		for (i=lo; i<=hi; i++) b[i]=a[i];
		
		i=lo;
		j=m+1;
		k=lo;
		
		while (i<=m && j<=hi)
			if (b[i]<=b[j]) a[k++]=b[i++];
			else a[k++]=b[j++];
		
		while (i<=m) a[k++]=b[i++];
	}
	
	public static void main(String[] args) 
	{
		int[]c=new int[]{3,1,5,4,6};
		MergeSort s = new MergeSort();
		s.sort(c);
		//System.out.println(s); //Array soll sortiert ausgegeben werden
	}

}

Danke im Voraus!
 
ist s dein Array?

Also du macht einfach eine for-Schleife und gibts dann jeden Wert einzelnd aus, so z.B.:
Code:
for(int i=0;i<s.length-1;i++){
           System.out.println(s[i]);
         }




SO ähnlich musst du das machen, dann geht der einmal das komplette Array durch und gibt jede Position aus.
 
s. a ist das sortierte array

c ist auch das sortierte array, da c nur ne referenz auf des array objekt ist

Code:
		for (int i : c) {
			System.out.print(i);
		}
 
Danke stand mal wieder auf dem Schlauch wegen der for-Schleife.

Der Algorithmus sortiert nun das von mir vorgegebene Array.

Nun meine Frage wie kann ich die Laufzeit meines Algorithmus berechnen und ausgeben bzw. gibt es in Java Funktionen die dies bewerkstelligen also z.B. mit System.Time oder System.currentTime.

:bahnhof:
 
Lol, hab mir auch beim durchlesen gefragt ob ihr nicht in Karlsruhe studiert ^^
grüße Lotus
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben