Я работаю над заданием на домашнее задание, в котором я должен создать функцию, которая будет выполнять сортировку двоичных вставок, но моя функция, похоже, не работает должным образом.
Здесь я попытался объединить бинарную функцию поиска с функцией сортировки вставкой (в задаче домашней работы указывается, что она должна быть в форме функции: inserttionSort (int [] array, int lo, int hi))
public static void insertionSort(int[] array, int lo, int hi){
int mid;
int pos;
for (int i = 1; i < array.length; i++) {
int x= array[i];
while (lo < hi) {
mid = lo + (hi -lo)/2;
if (x == array[mid]) {
pos = mid;
}
if (x > array[mid]) {
lo = mid+1;
}
else if (x < array[mid]) {
hi = mid-1;
}
}
pos = lo;
for (int j = i; j > pos; j--) {
array[j] = array[j-1];
}
array[pos] = x;
}
}
Если я попытаюсь запустить его со списком {2,5,1,8,3}, вывод будет
2 5 1 3 1(если lo hi)
2 5 3 8 5 (если lo == hi)
Хотя я ожидаю, что это отсортированный список ... Любая идеячто я делаю не так?