关于java的java mysql varbinaryySearch()方法

问一下关于Collections中的 binarySearch();方法返回结果的问题【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:717,139贴子:
源程序代码:package eclipse_import java.util.ArrayLimport java.util.Cimport java.util.Cimport java.util.Lclass StringLenCp implements Comparator&String& {public int compare(String s1, String s2) {int num = new Integer(s1.length()).compareTo(new Integer(s2.length()));if (num == 0) {return s1.compareTo(s2);}}}public class CollectionsDemo {public static void main(String[] args) {List&String& list = new ArrayList&String&();list.add("ahzzzzz");list.add("bahzzz");list.add("gahzzz");list.add("hzz");list.add("dahzzzz");//method_sort(list);//method_max(list);method_binarySearch(list);}public static void method_binarySearch(List&String& list) {Collections.sort(list, new StringLenCp());sop(list);int index = Collections.binarySearch(list, "dahzzzz");sop("index = " + index);}public static void method_max(List&String& list) {String max = Collections.max(list);sop("max--&" + max);String max_length = Collections.max(list, new StringLenCp());sop("max_length--&" + max_length);}public static void method_sort(List&String& list) {sop(list);Collections.sort(list, new StringLenCp());sop(list);}public static void sop(Object obj) {System.out.println(obj);}}
java开发,0首付入学,签订就业协议,企业级开发模块,商业项目贯穿学习过程.面授教学保障效果.先学习后付款,4个月实现菜鸟变大神.轻松高薪就业.
打印的结果:[hzz, bahzzz, gahzzz, ahzzzzz, dahzzzz]index = -1
为什么打印的index是 - 1 呢?
排序后的list中不是明明有dahzzzz这个对象吗?
是要沉下去的意思吗
求一位大神指点指点
登录百度帐号关于binarySearch的返回值【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:717,139贴子:
看了Java api,看得那个相当蛋痛。。。 相当傻蛋痛。。。。。 public static int binarySearch(int[] a,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& int key)Searches the specified array of ints for the specified value using the binary search algorithm. The array must be sorted (as by the sort(int[]) method) prior to making this call. If it is not sorted, the results are undefined. If the array contains multiple elements with the specified value, there is no guarantee which one will be found. Parameters:a - the array to be searchedkey - the value to be searched for //请高手重点讲解下面的返回值?? (-(insertion point) - 1). 这个是啥玩意???Returns:index of the search key, if it is co otherwise, (-(insertion point) - 1). The insertion point is defined as the point at which the key would be inserted into the array: the index of the first element greater than the key, or a.length if all elements in the array are less than the specified key. Note that this guarantees that the return value will be &= 0 if and only if the key is found.
java开发,0首付入学,签订就业协议,企业级开发模块,商业项目贯穿学习过程.面授教学保障效果.先学习后付款,4个月实现菜鸟变大神.轻松高薪就业.
楼上的翻译,翻得更痛!
晕,没看见返回值是,otherwise, (-(insertion point) - 1)。明显不等于-1。
the index of the first element greater than the key 懂了,insertion point 应该是数组中大于 key 的第一个数的下标
反了 应该是 -a.length - 1,而且是仅当if all elements in the array are less than the specified key所有数组中的数都小于key时。
(-(insertion point) - 1) 这个东东,-(数组中大于 key 的第一个数的下标) - 1 那不是等于 -(数组中大于 key 的第一个数的下标 + 1 )晕晕,蛋痛蛋痛。。。这个啥玩意??
-1-a.length 和-a.length - 1 不是一样啊 敢情 楼下 和 下楼 不是一样啊? 宁外你的代码,一点意义都没有,应该要考虑测试&&(-(insertion point) - 1) 是否等于
-(数组中大于 key 的第一个数的下标 + 1 );应该这样System.out.println( Arrays.binarySearch( numbers, 3000 ) ); 实验证明我的结论是正确的!但是不理解 返回值:-(数组中大于 key 的第一个数的下标 + 1 )的含义,蛋痛!!
有中文的API啊,看英文的你是自己找事做
登录百度帐号为什么在Java中使用binarySearch方法时,该方法内的数组形参需要是有序的_百度知道
为什么在Java中使用binarySearch方法时,该方法内的数组形参需要是有序的
我有更好的答案
binarySearch方法是根据二分法查找指定的元素,反而该指定元素的下标索引这里就不得不提一下二分法的执行步骤:先找到中间位置的元素 &如果需要查找的元素比中间位置的元素小,就抛弃右边一半的元素,往左边找,然后重复第一步如果需要查找的元素比中间位置的元素大,就抛弃左边一半的元素,往左边找,然后重复第一步现在是否明白为什么binarySearch方法的形参必须是有序的了呢?因为如果不是有序的 &那么该方法查找的结果根本是没有意义的此外,该方法还有两个小细节:传进去当做参数的数组必须是升序排列如果该数组中有3个元素是相同的 &而你要查找的正好是该元素,那么该方法的返回值是该3个元素的下标索引中的任意一个,这也算是该方法的一个bug
采纳率:59%
来自团队:
有序数组是一种特殊的数组,里面的元素,按一定的顺序排列,我们这里假设由小到大排列。对于这种特殊的数组,我们可以采用前面提到的二分法来查找数组中特定的元素,这种算法的思想是:每查找一次,便将查找的范围缩小一半,所以叫做二分法查找。
为您推荐:
其他类似问题
binary的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。binarySearch(List&? extends Comparable&? super T&&, T)&方法用于搜索指定列表,使用二进制搜索算法来指定对象。
以下是java.util.Collections.binarySearch()方法的声明。
public static &T& int binarySearch(List&? extends Comparable&? super T&& list,
list--这是要搜索的列表。
key--这是要搜索的键。
在方法调用返回的搜索键的索引,如果它被包含在列表中。
ClassCastException--&这被抛出,如果列表中包含不可相互比较的元素。
下面的例子显示java.util.Collections.binarySearch()方法的使用
package com.yiibai;
import java.util.*;
public class CollectionsDemo {
public static void main(String args[]) {
// create arraylist
ArrayList&String& arlst=new ArrayList&String&();
// populate the list
arlst.add(&TP&);
arlst.add(&PROVIDES&);
arlst.add(&QUALITY&);
arlst.add(&TUTORIALS&);
// search the list for key 'QUALITY'
int index=Collections.binarySearch(arlst, &QUALITY&);
System.out.println(&'QUALITY' is available at index: &+index);
让我们来编译和运行上面的程序,这将产生以下结果。
'QUALITY' is available at index: 2
易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:"教程" 选择相关教程阅读或直接访问:http://m.yiibai.com 。
上一篇:下一篇:
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加3个群。
Java技术群:
(人数:2000,等级:LV5,免费:否)
MySQL/SQL群:
(人数:2000,等级:LV5,免费:否)
大数据开发群:
(人数:2000,等级:LV5,免费:否)
Python技术群:
(人数:2000,等级:LV5,免费:否)
人工智能深度学习:
(人数:2000,等级:LV5,免费:否)
测试工程师(新群):
(人数:1000,等级:LV1,免费:是)
前端技术群(新群):
(人数:1000,等级:LV1,免费:是)
C/C++技术(新群):
(人数:1000,等级:LV1,免费:是)
Node.js技术(新群):
(人数:1000,等级:LV1,免费:是)
PostgreSQL数据库(新群):
(人数:1000,等级:LV1,免费:否)
Linux技术:
(人数:2000,等级:LV5,免费:否)
PHP开发者:
(人数:2000,等级:LV5,免费:是)
Oracle数据库:
(人数:2000,等级:LV5,免费:是)
C#/ASP.Net开发者:
(人数:2000,等级:LV5,免费:是)
数据分析师:
(人数:1000,等级:LV1,免费:是)R语言,Matlab语言等技术20:44 提问
java中的BinarySearch的问题
import java.util.*;
public class Sample14_25 {
public static void main(String[] args) {
ArrayList al = new ArrayList();
for(int i=0;i&50;i++){
al.add(Integer.valueOf((int)(Math.random()*100)));
System.out.println("输出排序前的数组:");
//Collections.sort(al);
System.out.println(al);
int index = Collections.binarySearch(al, Integer.valueOf(20));
if(index & 0){
System.out.print("不好意思,没有查找到相应的内容");
System.out.println("恭喜你,找到相应的内容,索引是:"+index+" 是该数组的第"+(index+1)+"个数字。");
System.out.print("{");
for(int i=0;i&al.size();i++){
if(i == index){
System.out.print("["+al.get(i)+"]"+" ");
System.out.print(al.get(i)+" ");
System.out.println("}");
程序大意:就是随机产生50个(或10个)100以内的整数,然后看看里面有没有20这个数字,要是有就用[]括起来。如18,22,45,[20],78.....
但是问题是,有时候这个程序并不能找到20,虽然生成的随机数里有20?还有就是随机生成的数字里有两个20,但是一会儿指出来第一个,一会儿指出来第二个。
注:随机生成的数字的个数有时是50个,有时是10个,我是为了方便找到20这个数字。
我先谢谢各位java师傅们了,谢谢!
按赞数排序
BinarySearch为二分搜索法,故查询前需要用sort()方法将数组排序,如果数组没有排序,则结果是不确定的,另外如果数组中含有多个指定值的元素,则无法保证找到的是哪一个
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!
binasearch是使用二分法进行查找,这就要求需要查找的数据必须是有序的,所以,你必须先对随机数产生的数据进行排序
二分查找,数组必须是有序的!!!!!
二分法查找,要求输入序列有序。你可以先用插入式或者快排将输入数组排序之后,使用二分法查找
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐}

我要回帖

更多关于 java binaryoperator 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信