十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
arr = new ArrayIns(maxSize);//创建ArrayIns类的对象arr for(int j=0;jmaxSize;j++){ long n = (int)(java.lang.Math.random()*99);//产生随机数。
创新互联成立与2013年,先为惠民等服务建站,惠民等地企业,进行企业商务咨询服务。为惠民企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
推荐答案的 code 有问题,并没有考虑到若待查数的下标是 0 怎么办?所以若顺序表中不存在待查元素 应该 return -1 加上主函数的最后两行调用两次查找函数很多余,代码显得不够简练。
二分查找是一种在有序数组中查找指定元素的算法,它的基本思想是:每次将查找区间缩小一半,直到找到目标元素或者确定目标元素不存在为止。
else if (midVal key)high = mid - 1;elsereturn mid; // key found}return -(low + 1); // key not found.} 可以从源码中看到,真正的二分查找是在binarySearch0方法中进行的。
很明显你不能把middle的赋值语句设在循环语句的外面,在二分查找算法中,在执行一次查找后,middle是需要被重新赋值的,你所说的可以正确查找9只是一种巧合而已,因为第一次循环就能把9查出来。
你的程序不对,二分查找 else if(a[mid]searchnum){ right=mid-1 } else left=mid+1;你写反了。
1、使用Collections类的二分查找之前需要对数据进行排序,否则返回的索引值是不确定的,因此你这里出现了负数。
2、如果非要用二分法输出所有数组下标的话,很遗憾,实现不了,除非自己覆盖方法。二分法先排序,可以直接使用Arrays.sort(arr);。调用Arrays.binarySearch(arr,6);//比如要查找6的下标。
3、public static int binarySearch(int[] a,int key)使用二进制搜索算法来搜索指定的 int 型数组,以获得指定的值。必须在进行此调用之前对数组进行排序(通过上面的 sort 方法)。
什么是二分查找?二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
二分查找法也称折半查找法,是一种在有序数组中查找某一特定元素的搜索算法。
//***二分查找,都注释了,复制所有代码,保存成QuickSortApp.java***// class ArrayIns { private long theArray[];private int nElems;//--- public ArrayIns(int max){ //构造方法,初始化成员属性。