Я просто хочу спросить, почему я все еще получаю нулевой указатель на свою функцию sortInOrder(Object x)
.Сортировка массива с использованием binarySearch
То, что я пытаюсь сделать, это использовать sortInOrder
для вставки объектов в мой массив data[]
в порядке возрастания.
public Object[] data = new Object[10];
public static void main(String[] args) {
for (int i = 0; i < 5; i++)
{
int r = (int) (Math.random() * 100);
System.out.println("Adding " + r);
sortInOrder(r);
for (int j = 0; j <= 10; j++)
System.out.println((Integer) data[j]);
}
for (int i = 0; i < 10; i++)
System.out.println((Integer) data[i]);
}
public static void sortInOrder(Object x) {
if (x == null)
throw new IllegalArgumentException();
int idx = 0;
if (data[idx] != null)
idx = Arrays.binarySearch(data, 0, data.length-1, ((Integer) data[idx]).compareTo((Integer) x));
for (int i = idx + 1 ; i < data.length - 1 ; i++)
data[i] = data[ i - 1 ];
data[idx] = x;
}
'data [i + 1]' выходит за границы массива, когда i = data.length-1 –
Done, фиксируя его. – Sleek13
Техника не имеет смысла. Двоичный поиск работает только с массивами, которые уже отсортированы. – EJP