java 二分法】的更多相关文章

package TestArray; import java.util.Arrays; /** * 二分法查找 */ public class Test { public static void main(String[] args) { int[] arr = {30, 20, 50, 10, 80, 9, 7, 12, 100, 40, 8}; int searchWord = 20; /** * 二分法执行前,一定要排序 */ Arrays.sort(arr); //二分法查找之前,一定要…
二分法查找原理: 1.只要低位下标不大于高位下标,就进行二分查找(步骤1-3) 2.先在有序的数组中对半查找中间的坐标,如果中标和要查找的下标相等时,找到目标数,那二分结束. 3.如果步骤2没有找到,那就会出现先2种情况:a.中标大于find值;b.中标小于find值: 3.1.如果中标大于find值,说明find值在中标的左边,那么高位就是此时的中标,然后继续二分 3.2.如果中标小于find值,说明find值在中标的右边,那么低位就是此时的中标,然后继续二分 4.如果低位下标大于高位下标:那…
public class Dichotomy {        //定义查找次数    static int count = 0;        public static void main(String[] args) {                //定义数组        int [] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};                //二分法查找        int result = searchRecursive…
假设有一个数组 { 12, 23, 34, 45, 56, 67, 77, 89, 90 },现要求采用二分法找出指定的数值并将其在数组的索引返回,如果没有找到则返回 -1.代码如下: package cn.sunzn.dichotomy; public class DichotomySearch { public static void main(String[] args) { int[] arr = new int[] { 12, 23, 34, 45, 56, 67, 77, 89, 9…
二分法就是要将数据每次都分成两份然后再去找到你想要的数据 在二分法查找时要求传入的数据必须已经有序,假设现在为升序,然后每次将所寻找的值与中间值(数组左边界+(右边界-左边界)/2)作比较,大了则去寻找中间值左侧数据,小则寻找中间值右侧数据.…
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)…
算法:当数据量很大适宜采用该方法.采用二分法查找时,数据需是有序不重复的. 基本思想:假设数据是按升序排序的,对于给定值 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…
源码 public class Dichotomy { public static void main(String[] args){ int[] array = new int[12]; for(int i=0;i<12;i++){ array[i] = i; } System.out.print(dichotomy(array,8)); } private static int dichotomy(int[] array,int key){ int left = 0,right = arra…
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…