Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void binInsertSort(int[] data) {
- int n = data.length; // Длина массива
- for (int i = 1; i < n; i++) {
- int c = data[i]; // Вставляемое значение
- // Организация поиска места для вставки значения c
- int low = 0, high = i;
- // Inv : (low <= high) && место для c - внутри data[low:high]
- while (low < high) {
- int m = (low+high) >> 1;
- // low <= m < high
- if (data[m] < c) low = m+1; else high = m;
- }
- // Найдено место вставки - low
- // Сдвигаем элементы в сторону больших индексов.
- for (int j = i-1; j >= low; j--) {
- data[j+1] = data[j];
- }
- // Заносим значение на найденное место
- data[low] = c;
- }
- }
Add Comment
Please, Sign In to add comment