我有点想以某种方式指示 sql server 使用特定算法执行搜索。
我的场景就像我有一个排序的单词列表。我将其上传到数据库表中。我想搜索表以查找该词是否存在。这就是我的要求。
sql server 是为这样的用例而设计的吗?如果没有这样的东西,我可以使用哪些选项来加快检索速度?
bisect.bisect_left((f(x) for x in range(pow(10, 6))), 0)
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用 bisect 对满足f(x) >= 0的最小x进行二分搜索。并且 f(x) 是严格递增的。我使用二分查找的原因是因为计算 f(x) 会消耗大量资源。所以我想尽可能少地计算它。
我在这里遇到的问题是 bisect_left 中的第一个参数需要是一个列表类型,这意味着我必须为每个 x 计算 f(x)。
在这种情况下有没有办法进行二分搜索?
我被要求使用二分搜索来查找我们读取的文件中的特定单词。
我不明白的问题是当您查找单词而不是数字时如何使用二分搜索。
我怎样才能让 data.table 理解,这些值是上面定义的变量而不是列名?
带有第一个注释的行应该返回 0L,但返回 dt 中包含的所有数据。
可重现的例子:
library(data.table)
dt <- structure(list(zip_from = c("1000", "1000", "1000", "1000", "1000",
"1000", "1000", "1000", "1000", "1000"), zip_to = c("1000", "1001",
"1002", "1003", "1004", "1005", "1006", "1007", "1008", "1009"
), time_1 = c(0, 332.8, 332.8, 362.5, 504.9, 256.6, 446.4, 694.4,
723.4, 462.3), dist_1 = c(0, 3208, 3208, 3465.3, 4275.5, 2267.6,
4158.1, 5811.4, 8842.6, 4624.7), dist_2 = c(0, 3208, 3208, 3465.3,
4275.5, 2267.6, 4158.1, 5811.4, 8842.6, 4624.7), time_2 = c(0,
332.8, 332.8, 362.5, 504.9, 256.6, …Run Code Online (Sandbox Code Playgroud) 就像标题所说的那样,我正在尝试使用二分搜索方法来搜索排序向量中最接近的给定值并返回其索引。我尝试使用 lower/upper_bound() 但返回的值是第一个或最后一个向量值,或者“0”。下面是我已将温度和电压读入向量的 txt 文件。
1.4 1.644290 -12.5
1.5 1.642990 -13.6
1.6 1.641570 -14.8
1.7 1.640030 -16.0
1.8 1.638370 -17.1
Run Code Online (Sandbox Code Playgroud)
这是我当前有效的线性搜索
double Convert::convertmVtoK(double value) const
{
assert(!mV.empty());
auto it = std::min_element(mV.begin(), mV.end(), [value] (double a, double b) {
return std::abs(value - a) < std::abs(value - b);
});
assert(it != mV.end());
int index = std::distance(mV.begin(), it);
std::cout<<kelvin[index];
return kelvin[index];
}
Run Code Online (Sandbox Code Playgroud)
这是我目前正在努力提高性能的算法。
double Convert::convertmVtoK(double value)
{
auto it = lower_bound(mV.begin(), mV.end(), value);
if (it == mV.begin())
{
it = mV.begin();
}
else …Run Code Online (Sandbox Code Playgroud) 今天我做了一个工作测试,被要求搜索一个整数数组,这是问题:
本练习的目标是检查数组中是否存在数字。
规格:
项目是按升序排列的整数。
该数组最多可包含 100 万个项目
实现函数existsInArray(_ numbers: [Int], _ k: Int)如果k属于numbers,则返回true,否则函数应返回false。
例子:
Run Code Online (Sandbox Code Playgroud)let numbers = [-9, 14, 37, 102] existsInArray(numbers, 102) // returns true existsInArray(numbers, 36) //returns false注意:尽量节省 CPU 周期
好的,所以我给出了我的答案,即下面的代码并等待结果
func existsInArray(_ numbers: [Int], _ k: Int) -> Bool {
if numbers.isEmpty {
return false
}
let numbersHalfIndex: Int = (numbers.count/2)
if k == numbers[numbersHalfIndex] {
return true
} else if k != numbers[0] …Run Code Online (Sandbox Code Playgroud) 我写了一个递归程序进行二分查找,正如你看到的,我试图在给定的数组中找到目标 =21 的位置,它应该将我的位置返回为 2。但是我的输出是 1。当我调试它时,它匹配 att arr[ start]=target, 然而它直接跳转到了 findTheNumber(arr, mid + 1, end, target); 然后是下一行,然后在中间返回..只是想知道为什么我的返回在“返回开始”时中断
package Recursion;
public class BinarySearch {
static int mid = 0;
public static int findTheNumber(int[] arr, int start, int end, int target) {
if (arr[start] == target) {
return start;
}
mid = (start + end) / 2;
if (arr[mid] == target) {
return mid;
}
if (target >arr[mid]) {
findTheNumber(arr, mid + 1, end, target);
} else if (target <arr[mid]) {
findTheNumber(arr, start, …Run Code Online (Sandbox Code Playgroud) def binsearch(a):
if len(a) == 1:
return a[0]
else:
mid = len(a)//2
min1 = binsearch(a[0:mid])
min2 = binsearch(a[mid:len(a)])
if min1 < min2:
return min1
else:
return min2
Run Code Online (Sandbox Code Playgroud)
我试图提出 min1 < min2 的时间复杂度,我觉得它是 O(n) 但我不太确定它是否正确。有人可以尝试向我解释如何计算此类代码的时间复杂度吗?
我正在尝试解决 BinarySearch.com 上的一个问题:
给定一个按升序排序的整数 nums 和一个整数 k 的列表,返回列表中的任意两个元素加起来是否为 k。您不能两次使用相同的元素。注意:数字可以是负数或 0。这应该在
O(1)空格中完成。
所以对于nums = [1, 3, 5, 8]和k = 6,答案应该是true。
我知道它可以使用两个指针来完成,但我正在学习二进制搜索,所以我想出了以下逻辑:
bool solve(vector<int>& nums, int k) {
for(int i=0; i<nums.size(); i++) {
auto loc=lower_bound(begin(nums), end(nums), k-nums[i]);
if(loc!=nums.end()) {
if(distance(nums.begin(), loc)!=i && *loc+nums[i]==k) return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
它被接受了,但时间复杂度是多少?我不确定是O(NlogN)因为我O(logN)对 中的每个值运行二分搜索(算法)nums,还是应该是O(N^2)因为当if条件为真时,我使用distance(),据我所知,这O(n)本身就是一个操作。
binary-search ×10
algorithm ×4
c++ ×2
java ×2
python ×2
search ×2
arrays ×1
big-o ×1
binary ×1
data.table ×1
ifstream ×1
r ×1
sortedlist ×1
sql-server ×1
swift ×1
testing ×1
vector ×1