Ich bin ein Anfänger in Java versucht, eine Klasse zu erstellen, die die binäre Insertion Sortierung implementiert und zufällige Arrays der Datengrößen 50, 500, 5000, 50000 und 500000 sortiert.Was ist falsch mit meinem binären Einfügecode?
Das Programm funktioniert gut, wenn ich implementiert es als Einfügesorte.
public double InsertionSort(long array[]) {
setType("Insertion Sort");
long temp;
int y;
double numOfSwap = 0, numOfComparisons = 0;
double startTime = System.nanoTime();
for (int x = 1; x < array.length; x++) {
temp = array[x];
numOfSwap++;
y = x;
numOfComparisons++;
while ((y > 0)) {
numOfComparisons++;
if ((array[y - 1]) > temp) {
array[y] = array[y - 1];
numOfSwap++;
y = y - 1;
} else
break;
}
array[y] = temp;
numOfSwap++;
}
double endTime = System.nanoTime();
setSwap(numOfSwap/3);
setComparisons(numOfComparisons);
setTime(endTime - startTime);
return getTime();
}
Aber als ich versuchte, eine binäre Suche einzufügen, funktionierte es nicht mehr.
public double binaryInsertionSort(long array[], int value, int left, int right) {
setType("Binary Insertion Sort");
long temp;
int y;
int left, right;
double numOfSwap = 0, numOfComparisons = 0;
double startTime = System.nanoTime();
for (int x = 1; x < array.length; x++) {
temp = array[x];
numOfSwqp++;
int left = y;
int right = x;
if (left>right)
return -1;
int middle = (left + right)/2;
if (array[middle] == value)
return middle;
numOfComparisons++;
else if (array[middle]>value)
return binaryInsertionSort(array, value,left, middle -1);
numOfComparisons++;
else
return binaryInsertionSort (array, value, middle +1, right);
numOfComparisons++;
}
double endTime = System.nanoTime();
setSwap(numOfSwap/3);
setComparisons(numOfComparisons);
setTime(endTime - startTime);
return getTime();
}
Kann mir bitte jemand helfen, meinen Code zu reparieren?
Haben Sie jemals von MCVE gehört?Es steht für Minimal, Complete und Verifable Example. Ich denke du solltest an deinem "Minimal" arbeiten. http://StackOverflow.com/Help/Mcve –
@JaroslawPawlak: Zumindest lieferte er vollständigen Code. –
@GauravMahindra Es könnte eine gute Sache sein, aber zu sagen "Ich habe diese 400 Zeilen Code, änderte ich es zu den anderen 400 Zeilen Code und es hörte auf zu arbeiten" ist in keiner Weise hilfreich. –