Я не могу найти, что случилось с моей сортировкой вставки. Мне нужно реализовать двоичный поиск в моем роде, и это не сработает.Вставка Сортировка с двоичным Serach
public void insertionSort(String[] data){
for (int i=1; i<data.length; i++){
String item = data[i];
int move = binarySearch(data, item, 0, i - 1);
for (int j = i; j < move; j++){
data[j] = data[j-1];
}
data[move]= item;
}
}
public int binarySearch(String[] data, String item, int low, int high) {
int mid;
while(low<=high){
mid=(low+high)/2;
if(item.compareTo(data[mid]) > 0)
low=mid+1;
else if(item.compareTo(data[mid]) < 0)
high=mid-1;
else
return mid;
}
return low;
}
Обратите внимание, что вы можете использовать метод 'Arrays.binarySearch'. Если он возвращает отрицательное значение, просто возьмите противоположное, которое является индексом, в котором должен быть элемент, если массив содержал его. – Dici
Проблема с частью двоичного поиска адресуется в http://stackoverflow.com/questions/16953009/implementing-a-binary-insertion-sort-using-binary-search-in-java –