我正在尝试更改我的代码,所以不是找到数组的特定值,而是输出间隔的值,如果找到,例如60-70。任何帮助表示赞赏。
using Plots, TestImages
img = testimage("cameraman")
p = plot(
axis = nothing,
layout = @layout([a [b [c [d;_]; _]; _]]),
size = (800,400)
)
for i=1:4
plot!(p[i], img, ratio=1)
end
p
到目前为止我有这个并希望它找到一个指定的间隔,所以如果我指定60-70,它将找到它们之间的内容。
答案 0 :(得分:0)
实际上这很简单:
在区间(lower, upper)
中搜索元素时,对数组arr
执行二进制搜索,以获取最小元素arr[n]
的索引,使arr[n] >= lower
和索引成为arr[m]
。最大元素arr[m] <= upper
,例如n
。
现在有几种可能性:
m
开始直到索引arr[n]
包含def lowestGreaterThan(arr, threshold):
low = 0
high = len(arr)
while low < high:
mid = math.floor((low + high) / 2)
print("low = ", low, " mid = ", mid, " high = ", high)
if arr[mid] == threshold:
return mid
elif arr[mid] < threshold and mid != low:
low = mid
elif arr[mid] > threshold and mid != high:
high = mid
else:
# terminate with index pointing to the first element greater than low
high = low = low + 1
return low
可以使用二进制搜索来搜索超过特定阈值的值,如下所示:
ind
对不起代码的外观,我的python远非完美。无论如何,这应该表明这种方法背后的基本思想。该算法基本上搜索具有属性arr[ind] >= threshold
的数组中第一个元素的索引<table>
<thead>
<tr>
<th>Field 1 Name</th>
<th>Field 2 Name</th>
</tr>
</thead>
<tbody>
{% for item in identity_France %}
<tr>
<td>{{ item.field1 }}</td>
<td>{{ item.field2 }}</td>
<tr>
{% endfor %}
<tbody>
</table>
。