Hi Leute ich habe hier ein Programm das Zahlen die in einem Array stehen sortieren soll, nach folgender Art.
Nehmen wir an wir haben |9, 5, 4, 3, 1, 8| hier sollen wir nun die größte und die kleinste Zahl bestimmen. Die kleinste ganz rechts und die größte ganz links. Dann werden die sortierten nicht mehr betrachtet und man nimmt die sotierte folge 1 | 5, 4, 3, 8, | 9 jetzt wird im 2ten Schleifenlauf die Zahlen 5, 4, 3, 8 sortiert usw. Ich habe den ersten Schritte geschafft aber mir fehlt die Idee, wie ich die darauf folgenden Schritte realisieren kann, jemand eine Idee ? Meine IDEE mit y ist im CODE beschrieben, aber funktioniert nicht. Bitte um ideen.DANKE
Nehmen wir an wir haben |9, 5, 4, 3, 1, 8| hier sollen wir nun die größte und die kleinste Zahl bestimmen. Die kleinste ganz rechts und die größte ganz links. Dann werden die sortierten nicht mehr betrachtet und man nimmt die sotierte folge 1 | 5, 4, 3, 8, | 9 jetzt wird im 2ten Schleifenlauf die Zahlen 5, 4, 3, 8 sortiert usw. Ich habe den ersten Schritte geschafft aber mir fehlt die Idee, wie ich die darauf folgenden Schritte realisieren kann, jemand eine Idee ? Meine IDEE mit y ist im CODE beschrieben, aber funktioniert nicht. Bitte um ideen.DANKE
Code:
static void Sort(int[] array){
// Hilfvariablen
int lowerBound = array[0];
int upperBound = array[0];
int x = 0, y = 0, z = 0, buffer = 0, buffer2 = 0;
//wird solange Ausgeführt wie das Array groß ist
while(x < array.length){
y wird auf 0 gesetzt und i=y so kann man beim nächsten Schleifendurchlauf von while
dass array an der stelle [0] auslassen weil y=1 und i=y -> = 1, dadurch wird beim
ersten durchlauf die 1 und 9 sotiert und wenn i=1 ist, dann sind die Grenzen für den 2ten
Durchlauf gesetzt - > ab array[1] bis array[array.lenght-1-z] z=1
Code:
for(int i=y; i<array.length-z; i++){
if(lowerBound > array[i]){
lowerBound = array[i];
}
if (upperBound < array[i]){
upperBound = array[i];
}
}
/* kopiervorgang, dieser soll nur einmal ausgeführt werden deshalb j = 0 und dann j++
* -> j!=0 Schleifenabbruch*/
Code:
for(int i=y; i<array.length-z; i++){
int j = 0;
if(j==0 && array[i] == lowerBound){
buffer = array[0];
array[0] = lowerBound;
buffer2 = array[array.length-1];
array[i] = buffer2;
//println("Buffer: "+buffer);
array[array.length-1] = buffer;
}
j++;
}
x++;
y++;
z++;
}
}
public static void main(String[] args) {
//initializing the array
int[] array = {9, 5, 4, 3, 1, 8};
Sort(array);
}