数组二分查找

    xiaoxiao2022-07-13  150

    数组二分查找(根据元素)

    代码详解

    package arrays; /** 数组二分查找 条件:数组元素不能重复且有序 结果:有则返回下标元素 无则返回-1 */ public class ArrayBinarySearch { public static void main(String[] args) { //初始化一个有序无重复的数组为目标查询数组 int[] arr=new int[]{0,1,2,3,4,5,6,7,8,9}; //查找目标元素 int a=10; //查找的结果 int index=-1; //数组开始下标 int head=0; //数组结束小标 int end=arr.length-1; //数组中间下标 int binary=(end+head)/2; //while循环遍历数组二分查找 while(true){ //查询的元素不在数组范围内,则直接退出循环 if(a<arr[head] || a>arr[end]){ break; } //判断中间下标的元素是否与查找元素相同 if(arr[binary]==a){ //相同,则直接将下标赋值给结果index index=binary; //找到结果退出循环 break; //中间下标的元素与查找元素不相同 }else{ //再次判断,中间下标元素的值是否大于查找的元素,如果大于,则重新赋值数组结束下标,查找前半段 if(arr[binary]>a){ //重新赋值数组结束下标 end=binary-1; //中间下标元素的值小于查找的元素,则重新赋值数组开始下标,查找后半段 }else{ //重新赋值数组开始下标 head=binary+1; } //数组中间下标重新赋值 binary=(end+head)/2; } } //查询结果输出 System.out.println("数组二分查找,元素"+a+"的下标:"+index); } }

    数组二分查找方法简易封装

    package arrays; /** * 数组二分查找方法简易封装 * @author Administrator * */ public class BinarySearch { public int binarySearch(int a,int[] arr){ //查找的结果 int index=-1; //数组开始下标 int head=0; //数组结束小标 int end=arr.length-1; //数组中间下标 int binary=(end+head)/2; //while循环遍历数组二分查找 while(true){ //查询的元素不在数组范围内,则直接退出循环 if(a<arr[head] || a>arr[end]){ break; } //判断中间下标的元素是否与查找元素相同 if(arr[binary]==a){ //相同,则直接将下标赋值给结果index index=binary; //找到结果退出循环 break; //中间下标的元素与查找元素不相同 }else{ //再次判断,中间下标元素的值是否大于查找的元素,如果大于,则重新赋值数组结束下标,查找前半段 if(arr[binary]>a){ //重新赋值数组结束下标 end=binary-1; //中间下标元素的值小于查找的元素,则重新赋值数组开始下标,查找后半段 }else{ //重新赋值数组开始下标 head=binary+1; } //数组中间下标重新赋值 binary=(end+head)/2; } } return index; } }
    最新回复(0)