推广

算法 | 二分法

iseeyu2年前 (2024-02-22)推广182

在一个有序数组中,找某个数是否存在.png

在一个有序数组中,找大于等于某个数最左侧的位置

public static int nearestIndex(int[] arr, int value) {
        int L = 0;
        int R = arr.length - 1;
        int index = -1; // 记录最左的对号
        while (L <= R) { // 至少一个数的时候
            int mid = L + ((R - L) >> 1);
            if (arr[mid] >= value) {
                index = mid;
                R = mid - 1;
            } else {
                L = mid + 1;
            }
        }
        return index;
    }

在一个有序数组中,找大于等于某个数最左侧的位置 .png

在一个有序数组中,找小于等于某个数最右侧的位置

public static int nearestIndex(int[] arr, int value) {
        int L = 0;
        int R = arr.length - 1;
        int index = -1; // 记录最右的对号
        while (L <= R) {
            int mid = L + ((R - L) >> 1);
            if (arr[mid] <= value) {
                index = mid;
                L = mid + 1;
            } else {
                R = mid - 1;
            }
        }
        return index;
    }

在一个有序数组中,找小于等于某个数最右侧的位置 .png

局部最小值

public static int getLessIndex(int[] arr) {
        if (arr == null || arr.length == 0) {
            return -1; // no exist
        }
        if (arr.length == 1 || arr[0] < arr[1]) {
            return 0;
        }
        if (arr[arr.length - 1] < arr[arr.length - 2]) {
            return arr.length - 1;
        }
        int left = 1;
        int right = arr.length - 2;
        int mid = 0;
        while (left < right) {
            mid = (left + right) / 2;
            if (arr[mid] > arr[mid - 1]) {
                right = mid - 1;
            } else if (arr[mid] > arr[mid + 1]) {
                left = mid + 1;
            } else {
                return mid;
            }
        }
        return left;
    }

局部最小可以使用二分法完成,定义局部最小时隐含的规律即:一个不存在相同元素的数组一定存在局部最小值,因为只需要找到一个局部最小值,这样就可以使用二分查找将数组规模逐渐减小。
1、首先判断数组第一个值是否小于右边的值,若小于,则局部最小值为第一个数;否则进行下一步;
2、判断数组的最后一个值是否小于左边的值,若小于,则局部最小值为最后一个数;否则进行下一步;
3、通过二分法来验证除首位和末尾位置的数组数据的局部最小值,若某值左右两边的值都大于该值,那么该值就属于局部最小值;否则继续通过二分法进行查找。

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/56168.html

相关文章

我来分享SEO就业前景怎么样。

我来分享SEO就业前景怎么样。

任何行业都有一部分人是处在金字塔顶端的。seo行业也一样,想要获得大的成功与自己的专业能力和努力是分不开的。从大的范围来看,大部分seo技术工作者的前景是很普通的,只有少部分兼具seo技术与高情商的人,才能获得更大的成功。 成功绝非偶然,提高成功的概率在于天时地利人和,缺一不可。seo技术的...

电子商务网站建设的作用是什么。

电子商务网站建设的作用是什么。

做买卖要选定“店面”,电子商务网站建设也是,很多人认为电子商务网站建设、网站制作越省钱越好,我觉得,这钱不是应当省的,最先人们要清晰意识到,将来很多的顾客不会去公司实地考察,仅仅从企业官网中进行了解,然后建立信任度,从而达成交易,因此企业的网站制作与企业的“店面”一样重要,而且随着销售市场的发展趋势...

老板1000万该如何花?主流推广渠道投放组合策略

老板1000万该如何花?主流推广渠道投放组合策略

从此文中,大家可以了解到目前市场上主流的营销推广渠道,以及各自的特点。对于今后的工作,相信能有一定启发。 定理一:理解流量分发机制,是做好单一渠道的根本 比如应用市场有推荐,排行榜,热搜,搜索等,不同的地方流量大小不同,触发机制也不同,针对单一渠道,理解其流量的分发机制,能帮助我们做好...

网络营销推广方式——软文营销

每个人中可能会在杂志或是网络上看到有关健身的文章,于是按照里面的建议购买了用来健身的器材; 可能也会按照网站中的烹饪方法,购买特定的调味品来尝试美食制作; 或者是一个IT爱好者,读完某科技博客后尝试里面推介的新工具…… 这些文章不仅对读者有用处,内部亦有原理,它们是营销活...

我来教你企业网站搭建流程详解。

我来教你企业网站搭建流程详解。

    网站不仅代表企业在网络上的形象,也是企业把握网络商机的重要工具。成功的网站,离不开成功的策划,是网站能够为企业带来效益的前提。为了帮助您整理网站搭建的思路,网站建设公司的网站策划部门可以辅助您完成专业水准的网站搭建策划书草案,为您推荐合适的建站方案。一个网站的成功与否与建...

让主旋律和正能量在网络空间更加昂扬

让主旋律和正能量在网络空间更加昂扬

让主旋律和正能量在网络空间更加昂扬——二〇二一年“净网”集中行动综述光明日报记者 刘彬6月至10月,共计清理网络有害信息1000余万条,封堵关闭网站11万余个,查办网络案件2012起。这是2021年各地各部门开展“净网”集中行动的工作成果。“大快人心!虚无历史、侮辱先烈的行...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片