返回在使用二叉搜索的值的排序列表中可以多次出现的值第一次出现的位置

  • 本文关键字:位置 第一次 排序 返回 搜索 列表 python
  • 更新时间 :
  • 英文 :


例如,如果list= [2,3,3,4,5,7,7,9,10],

我想返回索引 1。

在这种情况下,没有目标参数,这与我们通常进行二分搜索的方式不同

[更新]

[这是我现在拥有的代码。它应该返回 1,因为第一次出现多个值(即 2(位于索引 1 处

代码照片链接

[更新]

像往常一样执行二进制搜索;但是当您到达要搜索的项目时,请继续向左搜索。

即:

  • min设置为第一个索引,max设置为最后一个索引(加一(。
  • 看看中间的那个((min+max)/2(。
  • 如果该值大于您要搜索的值,请将该索引设置为max;否则min该索引(加一(。
  • 重复此操作,直到找到具有所需值的索引。
  • 到目前为止,这只是常规的二进制搜索。现在存储该索引;它是您当前的最佳候选人。表现得好像您找到的值大于您要查找的值(即,max该索引(,然后继续搜索。

当您的搜索空间不足时(即min=max(,您找到的最后一个"候选"是您搜索的值的最低索引。

我正在分享您的代码片段,这将有助于找到您的答案

int leftIndex(int arr[], int n, int x)
{
int l = 0, h = n-1;
int mid = 0;
while(l <= h)
{
mid = l + (h-l)/2;
if(arr[mid] == x && (mid == 0 || arr[mid-1] != x))
return mid;
else if(arr[mid] >= x)
h = mid-1;
else l = mid + 1;
}
return -1;
}

你只需要理解这段代码。 这就像二进制搜索代码一样简单。只是一个条件,我们需要修改 以便我们可以获得所需的结果

相关内容

最新更新