比如给定一个递增的序列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
一直循环即可解决
上一篇:仙魔OL游戏中第一次聊天