Dies ist mein Code für verbesserte Bubble-Sortierung mit Boolean.Verbesserte Bubble Sort, irgendwann funktioniert, irgendwann nicht
import java.util.Scanner;
class BubbleSort {
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
int[] array = new int[5];
int temp;
boolean swap;
int count = 0;
for(int i = 0 ; i < array.length ; i++) {
System.out.println("Enter a number!");
array[i] = s.nextInt();
}
for(int i = 0 ; i<array.length-1; i++) {
swap = false;
for(int j = i + 1 ; j < array.length ; j++) {
count++;
if(array[i] > array[j]) {
temp = array[i];
array[i] = array[j];
array[j] = temp;
swap = true;
}
}
if(!swap) {
break;
}
}
for(int i = 0 ; i < array.length ; i++) {
System.out.println(array[i]);
}
System.out.println();
System.out.println(count);
}
}
Dieser Code manchmal für mich aussortiert, aber manchmal nicht.
Ich benutze zählen, um zu finden, wie viele Vergleiche hat der Computer machen, so dass ich weiß, dass ich verbesserte Blase Sorte und nicht die einfache verwenden.
Zuerst frage ich den Benutzer, fünf Zahlen zu sortieren.
Wenn die Zahlen sind: 5 4 3 2 1
die sortierte Liste ist 1 2 3 4 5
und es zeigt die Anzahl der Vergleiche als 10
oder
wenn die Zahlen: 1 2 3 4 5
die sortierte Liste ist 1 2 3 4 5
Vergleich ist 4
(das ist auch richtig, weil es nur 4 Vergleiche hat).
ABER
wenn der Benutzer eingibt: 1 3 2 4 5
die sortierte Liste ist 1 3 2 4 5
(nicht ändern) und die Anzahl der Vergleiche ist 4
.
So hat es nicht 3 tauschen und 2.
Was ist falsch mit meinem Code? Ist es wegen der Pause in der for-Schleife, wenn ich 1 und 3 vergleiche?
Was ist passiert, als Sie das Debugging probiert haben? – shmosel
Dies ist keine Bubble-Sortierung. Dies ist Auswahlsortierung. Nun, wenn es funktioniert, wäre es. –
@smossel wenn ich die nummer wie 1 3 2 4 5 benutze, ist die sortierte liste immer noch die selbe wie vorher, das heißt es hat sich nicht getauscht und es heißt ich habe nur 4 vergleiche. – Secret