多语言展示
当前在线:457今日阅读:168今日分享:49

求一个序列中元素第一次出现的位置下标

比如给定一个递增的序列A{1,3,3,3,6},如何求这样的数列中元素第一次出现的位置下标?首先我们要明确这个序列有两个特点,第一个特点就是它是递增的或者说是不减的,第二个特点是元素可以重复出现。今天小编就和大家分享下这个问题的算法实现。
工具/原料

电脑

方法/步骤
1

思路分析,这个题目可以使用二分法来实现,关于二分法可以参看我的另一篇经验介绍

2

我们在这里假设这个序列所在区间的左端点为left,右端点为right,首先我们一步一步来拆解这个问题

3

我们先来求目标元素什么时候出现,然后再来第一次出现的下标,在这里我们设要求的目标元素为x

5

如果A[mid]==x,说明查找成功,退出查询

6

如果A[mid]>x,说明元素x在mid位置的左边,因此往左子区间[left,mid-1]继续查找

7

如果A[mid]

8

一直循环即可解决

推荐信息