java 二分法查找原理】的更多相关文章

二分法查找原理: 1.只要低位下标不大于高位下标,就进行二分查找(步骤1-3) 2.先在有序的数组中对半查找中间的坐标,如果中标和要查找的下标相等时,找到目标数,那二分结束. 3.如果步骤2没有找到,那就会出现先2种情况:a.中标大于find值;b.中标小于find值: 3.1.如果中标大于find值,说明find值在中标的左边,那么高位就是此时的中标,然后继续二分 3.2.如果中标小于find值,说明find值在中标的右边,那么低位就是此时的中标,然后继续二分 4.如果低位下标大于高位下标:那…
算法:当数据量很大适宜采用该方法.采用二分法查找时,数据需是有序不重复的. 基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功:若 x 小于当前位置值,则在数列的前半段中查找:若 x 大于当前位置值则在数列的后半段中继续查找,直到找到为止. 假设有一个数组 { 1,2,3,4,5,6,7,8,9,10 },现要求采用二分法找出指定的数值并将其在数组的索引返回,如果没有找到则返回 -1.代码如下: public class Dichoto…
二分法查找 /** * 二分法查找 找不到返回-1 * @author yangzi * */ public class TwoFind { public static int twoFind(int ia, int[] arr, int left, int right) { if (left > right) { return -1; } if (arr[(left + right) / 2] == ia) { return (left + right) / 2; } if (arr[(lef…
import java.util.Arrays; public class TestBinarySearch { public static void main(String[] args) { int[] arr = { 30,20,50,10,80,9,7,12,100,40,8}; Arrays.sort(arr);//排序 System.out.println(Arrays.toString(arr)); System.out.println(myBinarySearch(arr,10)…
package util; class BinarySearch { static int binarySearch(int[] array,int goal){//传入排好序的数组和目标数字 int low = 0;//数组的开始项 int high = array.length - 1;//数组的结束项 while(low <= high) { int middle = (low + high) / 2;//数组分割数 if(goal == array[middle]) { return m…
java基础-数组的折半查找原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让你写一个数组的查找功能,需求如下:在一个数组中,找一个元素,是否存在于数组中, 如果存在就返回这个元素,如果没有这个元素,就可以返回一个负数.今天我们来介绍一下折半查找的原理,并自己用代码实现折半查找. 一.数组的折半查找原理 二分查找发,也叫折半查找,它的前提就是被查找的数组的元素,必须是有序(本篇博客数据案例均为升序)排列的. 1>.在查找前对数组进行折半操作 (初始化指针位置) 折半公…
算法:当数组的数据量很大适宜采用该方法.采用二分法查找时,数据需是有序不重复的,如果是无序的也可通过选择排序.冒泡排序等数组排序方法进行排序之后,就可以使用二分法查找. 基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功:若 x 小于当前位置值,则在数列的前半段中查找:若 x 大于当前位置值则在数列的后半段中继续查找,直到找到为止,但是如果当前段的索引最大值小于当前段索引最小值,说明查找的值不存在,返回-1,不继续查找. import…
一.概念 二分查找算法也称折半查找,是一种在有序数组中查找某一特定元素的搜索算法. 二.算法思想 搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束:如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较.如果在某一步骤数组为空,则代表找不到.这种搜索算法每一次比较都使搜索范围缩小一半. 三.优缺点 二分查找算法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难.因此,二分查找…
package javafirst; import java.util.Arrays; class MaoPao{ //升序排列 /** * @param arr 要排序的数组 * @return int型排序好的升序数组 */ public int[] ascendSort(int[] arr){ for(int i = 0; i < arr.length - 1; i++){ for(int k = 0; k < arr.length - 1 - i; k ++){ if (arr[k]…
什么是二分法查找 首先,使用二分法查找的前提是:被查找的数组已排好序 具体实现: 假如有一组数为3,12,24,36,55,68,75,88要查给定的值24.可设三个变量front,mid,end分别指向数据的上界,中间和下界,mid=(front+end)/2. 1.开始令front=0(指向3),end=7(指向88),则mid=3(指向36).因为a[mid]>x,故应在前半段中查找. 2.令新的end=mid-1=2,而front=0不变,则新的mid=1.此时x>a[mid],故确定…