JS二分法查找数值在数值中的区间

需求:求一个数字类型,在一个数组中的区间;

 1 $(function(){
 2     //二分法计算最近的数组下标
 3     Array.prototype.binarySearch = function(obj){
 4         //var value = 0;
 5         var left = 0;
 6         var right = this.length;
 7         while(left <= right){
 8             var center = Math.floor((left+right)/2);
 9             if(obj<this[center]){
10                 right = center - 1;
11             }else{
12                 left = center + 1;
13             }
14         }
15         return right;
16     }
17         //测试数据
18         var tempArray = new Array(‘0‘,‘10‘,‘20‘,‘30‘);
19         var obj = 18;
20         console(tempArray.binarySearch(obj));
21 });      
时间: 2024-10-07 12:12:49

JS二分法查找数值在数值中的区间的相关文章

二分法查找数字在数组中的索引,确定数字对应的索引

场景: 一组数字类型的数据,给出一个数字,求出数字对应的索引 例如: int[] arr=new int[]{1,2,3,4,10,20,30,50,90,100} 我们要求55对应的索引位置. 假设arr数组中存储是数字范围的起始值(按范围求索引也可以应用此算法场景) 那么索引对值的表格为: 索引 1 2 3 4 5 6 7 8 9 10 值 1 2 3 4 10 20 30 50 90 100 · 我们使用二分法来求出50对应应该所在索引位置 一.实例解析 算法如下所示 int Search

js 二分法查找

例子:有序数组查找 //1递归做法 function findArr(arr,value,left,right){ var mid=Math.floor((left+right)/2); //防止无穷递归 if(left>right){ return } if(arr[mid]>value){//左边 return findArr(arr,value,left,mid-1) }else if(arr[mid]<value){//右边 return findArr(arr,value,mi

基于二分查找法的数值区间查找

1.问题定义: 在有序数组中,查找在输入数组满足大于某值a,小于某值b的所有元素.其中a和b可以不在数组中. 2.举例描述: 输入数组eg:{2,7,8,11,16,26,31,33,37,40,45,49}.查找满足大于10小于30的所有数字,则输出的结果为{11,16,31}子集.若查找大于50或小于2则输出空集. 3.线性扫描方式: 复杂度O(n) 从左到右扫描满足条件的区间 4.二分查找方式: 复杂度O(logN)二分查找满足条件的区间,两次二分查找,确定子数组范围. auto bina

double类型的数值在EditText中显示?

============问题描述============ double类型的数值在EditText中显示?et_count.setText(double型数值) 报错,请问应该怎么写? ============解决方案1============ 你要用String.valueof(double value) ============解决方案2============ et_count.setText(String.valueOf(double型数值)) ============解决方案3====

二分法查找 --JS 实现

var indexOfSorted = function f(arr,n){ //assume : arr has been sorted var low = 0; var high = arr.length - 1; var mid = (low + high) / 2; while(high - low > 1){ if(n == arr[low]){return low;} if (n == arr[high]){return high;} if(n == arr[mid]){return

计算int 型数值在内存中二进制1的个数

今天在华为OJ上遇到这么一个题目,很简单,但是却总是得不到最好的成绩记录.因此比较了自己的程序.思路与别人的异同,发现还是有很大区别的,遂记录如下. 题目-- 输入一个int型整数,求该整数的二进制在内存中有多少个1.例如输入10,由于其二进制表示为1010,有两个1,因此输出2. 思路1 <span style="font-size:18px;">public static void main(String[] args) { Scanner scanner = new

Java中的二分法查找算法

[ 什么是二分查找 ]  二分查找又称为折半查找,该算法的思想是将数列按序排列,采用跳跃式方法进行查找,即先以有序数列的中点位置为比较对象, 如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分.以此类推不断缩小搜索范围. [ 二分查找的条件 ] 二分查找的先决条件是查找的数列必须是有序的. [ 二分查找的优缺点 ] 优点:比较次数少,查找速度快,平均性能好: 缺点:要求待查数列为有序,且插入删除困难: 适用场景:不经常变动而查找频繁的有序列表. [ 算法步骤描述 ] ①

用最小的内存和二分法查找数组中是否存在这个数

package Test; public class Test { //用最小的内存查找数组中是否存在这个数 public static void main(String[] args) { int [] arr = {12,2,3,4,5,6,7,8,90,76,43}; byte[] byt = new byte[100]; for (int i = 0; i < arr.length; i++) { byt[arr[i]] = 1; } int n = 13; if(byt[n] == 1

Java中整数值的4中表示方式u

Java中整数值有4中表示方式:十进制.二进制.八进制和十六进制,其中二进制的整数以0b或0B开头:八进制的整数以0开头: 十六进制的整数以0x或0X开头,其中10-15分别以a-f(此处的a-f不区分大小写)来表示. 1.八进制表示整数值. int octalValue = 013; System.out.println("八进制的整数打印后为:"+octalValue); 2.十六进制表示整数值. int hexValue1 = 0x13; System.out.println(&