二分法变种

2024-09-01 14:38
文章标签 二分法 变种

本文主要是介绍二分法变种,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

package compublic class Test {public static void main(String[] args) {int[] nums = {4,7,7,9,12,13};int index = searchLastSmaller(nums,1);System.out.println(index);}/** 第一个与key相等的元素*/public static int searchFirstEqual(int[] arr, int key){int left = 0, right = arr.length-1;while(left<=right){int mid = (left+right)/2;if(arr[mid]>=key)right=mid-1;else if(arr[mid]<key) left = mid+1;}if(left<arr.length&&arr[left]==key) return left;return -1;}/** 找出最后一个与key相等的元素*/public static int searchLastEqual(int[] arr, int key){int left = 0, right = arr.length-1;while(left<=right) {int mid = (left+right)/2;if(arr[mid] > key) right = mid - 1;else if(arr[mid] <= key) left = mid + 1; }if( right>=0 && arr[right] == key) return right;return -1;}/** 找出第一个大于等于key的元素* */public static int searchFirstEqualOrLarger(int arr[],int key){int left=0, right=arr.length-1;while(left<=right) {int mid = (left+right)/2;if(arr[mid] >= key) right = mid-1;else if (arr[mid] < key) left = mid+1;}if(left>=arr.length)return -1;return left;}/** 查找第一个大于key的元素*/public static int searchFirstLarger(int[] arr, int key){int left=0, right=arr.length-1;while(left<=right) {int mid = (left+right)/2;if(arr[mid] > key) right = mid-1;else if (arr[mid] <= key) left = mid+1;}if(left>=arr.length)return -1;return left;}/** 查找最后一个小于或等于Key的元素*/public static int searchLastEqualOrSmaller(int[] arr, int key){int left=0, right=arr.length-1;while(left<=right) {int m = (left+right)/2;if(arr[m] > key) right = m-1;else if (arr[m] <= key) left = m+1;}//若right=-1,表明不存在return right;}/** 查找最后一个小于key的元素*/public static int searchLastSmaller(int[] arr, int key){int left=0, right=arr.length-1;while(left<=right) {int mid = (left+right)/2;if(arr[mid] >= key) right = mid-1;else if (arr[mid] < key) left = mid+1;}//若right=-1,表明不存在return right;}}

这篇关于二分法变种的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127224

相关文章

深度学习基础--卷积的变种

随着卷积同经网络在各种问题中的广泛应用,卷积层也逐渐衍生出了许多变种,比较有代表性的有: 分组卷积( Group Convolution )、转置卷积 (Transposed Convolution) 、空洞卷积( Dilated/Atrous Convolution )、可变形卷积( Deformable Convolution ),下面分别介绍下。 1. 分组卷积 在普通的卷积操作中,一个

分布式系统理论进阶:Paxos变种和优化

GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~大数据成神之路~预计更新500+篇文章,已经更新50+篇~ 引言 《分布式系统理论进阶 - Paxos》中我们了解了Basic Paxos、Multi Paxos的基本原理,但如果

数据结构基础之《(3)—二分法》

一、认识二分法 1、经常见到的类型是在一个有序数组上,开展二分搜索 2、但有序真的是所有问题求解时使用二分的必要条件吗?不 3、只要能正确构建左右两侧的淘汰逻辑,你就可以二分 二、二分法怎么用 1、在一个有序数组中,找某个数是否存在 public static boolean exist(int[] sortedArr, int num) {if (sortedArr == null |

AI学习指南深度学习篇-SGD的变种算法

AI学习指南深度学习篇 - SGD的变种算法 深度学习是人工智能领域中最为重要的一个分支,而在深度学习的训练过程中,优化算法起着至关重要的作用。随机梯度下降(SGD,Stochastic Gradient Descent)是最基本的优化算法之一。然而,纯SGD在训练深度神经网络时可能会面临收敛速度慢和陷入局部最优的问题。因此,许多变种SGD算法应运而生,极大地提高了模型的训练效率和效果。 本文

Kotlin 二分法算法游戏--猜价格

本人最新想学习算法,算法是提高程序性能的关键! 程序就是数据结构和算法! 写了一个二分法的游戏,供大家参考: 当然,语言基于kotlin import java.util.*/*** Created by Administrator on 2017/10/18.*/fun main(args: Array<String>) {// println("请输入商品真实价格")//

python基础-递归、二分法查找(for\递归)、三级菜单、压栈思想

递归方法二分法查找 通过for循环实现通过递归实现 递归应用–三级菜单压栈 递归方法 # age(1) n = 1 age(2)+2# age(2) n = 2 age(3)+2# age(3) n = 3 age(4)+2# age(4) n = 4 40def age(n):if n == 4:return 40return age(n+1)+2print

Java 算法的二分法

1.原理 1.1.在升序的集合中对半查找中位的下标,如果中位的下标和要查找的下标相等时,找到目标数,那二分结束。 1.2.如果 集合[中位]大于查找值,说明查找值在中位的左边,那么高位就是此时的中位-1,然后继续二分 1.3.如果集合[中位]小于查找值,说明查找值在中位的右边,那么低位就是此时的中位+1,然后继续二分 1.4.如果低位下标大于高位下标,那就没有找到值 2.实例 /*** @C

二分法与bisect模块

文章目录 二分法与bisect模块二分bisect模块常用函数bisect系,查找indexinsort系,实际插入。 应用 二分法与bisect模块 二分 二分前提是有序,否则不可以二分。二分查找算法的时间复杂度 O ( log ⁡ 2 n ) O(\log_2n) O(log2​n) 将一个有序序列[37, 99, 73, 48, 47, 40, 40, 25, 9

03-1. 二分法求多项式单根(20) MOOC

二分法求函数根的原理为:如果连续函数f(x)在区间[a, b]的两个端点取值异号,即f(a)f(b)<0,则它在这个区间内至少存在1个根r,即f(r)=0。 二分法的步骤为: 检查区间长度,如果小于给定阈值,则停止,输出区间中点(a+b)/2;否则如果f(a)f(b)<0,则计算中点的值f((a+b)/2);如果f((a+b)/2)正好为0,则(a+b)/2就是要求的根;否则如果f((a+b)

【Java 搜索二维矩阵 I II,多数元素 I II,分治法 二分法 摩尔投票法】

搜索二维矩阵 I II,多数元素,分治法 & 二分法 & 摩尔投票法 题目1:力扣-搜索二维矩阵[https://leetcode.cn/problems/search-a-2d-matrix/description/](https://leetcode.cn/problems/search-a-2d-matrix/description/)分治-排除法分治排除法-代码实现 二分法二分法-代