Итак, я пытаюсь понять, как правильно использовать двоичную сортировку вставками без необходимости метода подкачки или чего-то подобного. Мой друг дал мне грубую интерпретацию необходимого кода, но я не могу заставить его работать так, как я хочу.
private static int binaryInsertionSort(int[] b)
{
int left, right, middle, i, m;
int compareCount = 0;
for (int j = 1; j < b.length; j++)
{
left = b[j - 1];
right = b[j + 1];
if (b[j] < b[left])
{
i = left;
}
else
{
i = left + 1;
}
m = b[j];
for(int k = 0; k < (j - i - 1); k++)
{
b[j - k] = b[j - k - 1];
compareCount++;
}
b[i] = m;
}
return compareCount;
}
Int compareCount предназначен просто для того, чтобы увидеть, сколько сравнений выполняется в ходе выполнения метода. Теперь то, что я пытаюсь сделать, это упорядочить массив целых чисел обычным образом, в частности, как b[0] = 1, b[1] = 2,...... b[63] = 64. В моей основной метод я создаю массив и присваиваю значения в обратном порядке: b[0] = 64, b[1] = 63 и т. д. Как я могу получить этот код, чтобы переставить их в обычном порядке, который я ищу? Я смог сделать это очень просто с помощью обычной сортировки вставками, но это немного сложнее... для меня.