Я новичок в Java пытается создать класс, который реализует бинарную вставки рода и сортирует случайные массивы данных размером 50, 500, 5000, 50000 и 500000.Что не так с моим двоичным кодом вставки?
Программа отлично работает, когда я реализовывал это как сортировка вставки.
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();
}
Но когда я попытался вставить двоичный поиск, он больше не работал.
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();
}
Может кто-нибудь помочь мне исправить мой код?
Вы когда-нибудь слышали о MCVE?Это означает минимальный, полный и проверенный пример. Я думаю, вы должны работать над своим «Минимальным». http://stackoverflow.com/help/mcve –
@JaroslawPawlak: По крайней мере, он предоставил полный код. –
@GauravMahindra Это может быть хорошо, но, говоря: «У меня есть 400 строк кода, я изменил его на другие 400 строк кода и он перестал работать» никоим образом не помогает. –