算法基础——二分法练习1

二分法练习

一、完美数列

 

二、算法思路 

为了找出连续递增的一系列元素,所以可以先的对数组进行排序,然后可以针对每个位置的元素,寻找以该元素为下界,满足题目要求的最大数组,这个数组肯定是原排序后数组中连续的一段,那么寻找上界的过程就可以通过二分查找的方法实现

三、算法描述

  1、首先对数组进行一次排序算法,定义指针i和j,这里i和j为数组的下标,定义返回结果变量count。

  2、外侧循环以i为循环变量,每次循环都对A[i]~A[n-1]的元素进行二分查找

  3、二分查找过程:定义左指针l,右指针r,结果指针mid;令mid=(l+r)/2,当l<r就执行循环,每次循环比较A[mid]>A[i]*p,如果成立就令r=mid-1,否则令l=mid+1

  4、每次二分查找结束后更新count值,取mid-i+1和count的最大值。

三、代码

  

 

 除了使用二分法,该题还可用双指针法求解

双指针法求解:https://www.cnblogs.com/zyq79434/p/14856706.html

 

posted @ 2021-06-09 19:47  瑜琦  阅读(103)  评论(0)    收藏  举报