You are not logged in.

  • Login

1

Wednesday, December 14th 2011, 9:14am

Mergesort

Hi Leute,

ich interessiere mich in letzter zeit sehr viel für Informatik. Ich
programmiere oft mit bluej damit ich immer besser werde. Nun habe ich
versucht einige sortierverfahren zu erlernen. Daher habe ich es
erstmals mit mergesort versucht. Nun komm ich einfach nicht weiter. Ich
finde meine Fehler bei meiner Programmierung nicht. Deshalb hab ich
mich in diesen Forum angemeldet um endlich hilfe zu bekommen. Ich hoffe
ihr könnt meine Fehler finden.

MfG

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import java.util.Random;
 
public class a1
{
private int[] zufälligeZahlen;
int[] hundertZahlen = new int[100];
 
 
public void zahlenErzeugen()
{
Random zufall = new Random();
for (int i=0; i<100; i++)
hundertZahlen[i] = zufall.nextInt(100);
}
 
public void ausgeben()
{
for (int k=0; k<100; k++)
System.out.println(hundertZahlen[k]);
}
 
public void mergeSort() {
int laenge = hundertZahlen.length;
int speicher; int mitte = 0; int i = 0; int j = 0; int k = 0;
 
mitte = hundertZahlen.length/2;
 
int[] liste1 = new int[mitte];
int[] liste2 = new int[mitte];
int[] sortieren = new int[laenge-1 ];
//erster Teil
while(i < mitte) {
liste1[i] = hundertZahlen[i];
i++;
}
//zweiter Teil
i = mitte; j = 0;
while(i < (laenge)) {
liste2[j] = hundertZahlen[i];
i++;
j++;
}
 
System.out.println("Liste1: "+ liste1);
System.out.println("Liste2: "+ liste2);
 
i = 0; j = 0;
while(i < mitte) {
 
if(liste1[i] < liste2[j]) {
sortieren[k] = liste1[i];
i++;
}
else if(liste1[i] > liste2[j]) {
sortieren[k] = liste2[j];
j++;
}
k++;
}
 
System.out.println("Sortiert: "+ sortieren);
}
}

2

Wednesday, December 14th 2011, 11:19am

In Zeile fünf nutzt du Sonderzeichen. Das geht m.M. nach nicht.

3

Wednesday, December 14th 2011, 12:40pm

Hi,

welche(n) Fehler erhälst du denn? Meinst du einen logischen Fehler?
Ich weiß nicht ob die Formatierung deines Codes durch copy und paste so mieserabel geworden ist, aber es ist sehr schwer dir so zu helfen. Überblick gleich 0!

Zum testen solltest du auch nicht so viele Zahlen benutzen. Geh mal beim erzeugen der Zahlen zum testen von 100 auf 10.


Zu deinen Klassenvariablen. Umlauten müssten funktionieren, es sollte aber unstrittig sein, das das ein NoGo ist. Du nutzt diese auch garnicht?!
Oben definierst du noch die Klassenvariable hundertZahlen, im Code sprichst du diese aber nicht an. Du musst dies mittels this tun, also this.hundertZahlen.

Wenn du bei der Ausgabe was sehen möchtest, solltest du auch nicht einfach das Listenobjekt ausgeben sondern z.B die toString Methode nutzen.

Similar threads

Social bookmarks