【发布时间】:2021-02-20 23:35:53
【问题描述】:
我需要进行二进制搜索,除了普通函数之外,当找不到该值时,它会返回我必须插入新元素进行排序的索引。在下面的代码中,第二个 for 用于搜索要交换元素的索引。我需要做一个用二进制搜索替换它的函数。这种方法会是什么样子?
void insertion (int n, int v[])
{
for (int j = 1; j < n; ++j) {
int x = v[j];
int i;
// this for searches where the value should be inserted
for (i = j-1; i >= 0 && v[i] > x; --i)
v[i+1] = v[i];
v[i+1] = x;
}
}
我知道正常的二分查找是这样的。我需要改变什么?
static int BinarySearchR (int [] array, int l, int r, int key) {
int mid = ((r - l) / 2) + l;
if (array[mid] == key) return mid;
else if (array[mid] > key) return BinarySearchR(array, l, mid- 1, key);
else if(array[mid] < key) return BinarySearchR(array, mid + 1, r, key);
return -1;
}
【问题讨论】:
-
你有什么问题?
-
方法如何
-
你必须使用递归二分搜索吗?
-
递归或迭代
标签: java binary-search