精华内容
下载资源
问答
  • 2019-03-09 17:07:08

    首先,Java的折半查找法适用于有序数组中某一元素下标的查找。例如:

    
    //折半查找
    public class halfSerach {
    	public static void main(String[] args) {
    		int[] a = {12,23,34,36,47,108};
    		int index = getIndex(a,12);
    		System.out.println("index="+index);
    		
    	}
    	
    	public static int getIndex(int[] a,int key) {
    		int min,max,mid;
    		min=0;
    		max=a.length-1;
    		
    		while(min<max) {
    			mid=(min+max)/2;
    			if(a[mid]<key) 
    				min=mid+1;
    			else if (a[mid]>key) {
    				max=mid-1;
    			}
    			else {
    				return mid;
    			}	
    		}
    		return -1;
    		
    	}
    	
    
    }

    除了上诉一种方法,Java中还封装了一种方法

    int index = Arrays.binarySearch(a, 34);

    可用此函数直接找到数组中元素34的下标,与第一种方法结果相同。

    更多相关内容
  • java实现折半查找算法

    2019-12-06 17:27:55
    所谓的二分查找,指的是将待查的数据序列而分化,然后对比中间中间值和要查找值,判断结果,相等则找到,小于则在左边的子序列找,大于则在右边的子序列找
  • 折半查找法.java

    2021-09-14 12:26:56
    哈喽,很高兴见到大家,这次是用java语言写的折半查找法,实际上, 小白通过对比C语言里的二分法,小白发现,这两种办法的原理相同。 可以参考高中学的查找零点的办法。 import java.util.Scanner; public class ...

    哈喽,很高兴见到大家,这次是用java语言写的折半查找法,实际上,
    小白通过对比C语言里的二分法,小白发现,这两种办法的原理相同。
    可以参考高中学的查找零点的办法。

    import java.util.Scanner;
    public class 折半法查找 {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		Scanner reader=new Scanner(System.in);
    		int n=0;
    		System.out.println("请输入数组的长度:");
    		n=reader.nextInt();
    		int a[]=new int[n];
    		int i=0,j=0,t=0;
    		System.out.println("输入数组元素:");
    		for(i=0;i<n;i++){				/*这一部分是输入数组元素*/
    			a[i]=reader.nextInt();
    		}
    		for(i=0;i<n-1;i++){				/*这一部分是冒泡排序*/
    			for(j=0;j<n-i-1;j++){
    				if(a[j]>a[j+1]){
    					t=a[j+1];
    					a[j+1]=a[j];
    					a[j]=t;
    				}
    			}
    		}
    		System.out.println("请输入要查找的数:");
    		int x=reader.nextInt();
    		int mid=0,low=0,high=n;		/*low是数组的左下标,high是数组的右下标,mid是它们的中间值*/
    		mid=(high+low)/2;
    		while(x!=a[mid]) {
    			if(x<a[mid]) {
    				high=mid-1;
    				mid=(low+high)/2;
    			}
    			else if(x>a[mid]) {
    				low=mid+1;
    				mid=(low+high)/2;
    			}
    			if(low==mid)
    				break;
    		}
    		if(x==a[mid]) {
    			System.out.println("存在该数:"+x+"该数在数组里的位置:"+mid);
    		}
    		else if(x==a[high]) {
    			System.out.println("存在该数:"+x+"该数在数组里的位置:"+high);
    		}
    		else
    			System.out.println("数组里不存在该数");
    
    	}
    
    }
    

    来看一下下面这个例子
    在这里插入图片描述
    在这里插入图片描述

    小白很希望大家留言,期待下次见面,再见。

    展开全文
  • java折半查找法

    2021-03-16 20:16:24
    折半查找法是效率较高的一种查找方法。假设有已经按照从小到大的顺序排列好的五个整数a0~a4,要查找的数是X,其基本思想是: 设查找数据的范围下限为l=1,上限为h=5,求中点m=(l+h)/2,用X与中点元素am比较,若X等于...

    折半查找法是效率较高的一种查找方法。假设有已经按照从小到大的顺序排列好的五个整数a0~a4,要查找的数是X,其基本思想是: 设查找数据的范围下限为l=1,上限为h=5,求中点m=(l+h)/2,用X与中点元素am比较,若X等于am,即找到,停止查找;否则,若X大于am,替换下限l=m+1,到下半段继续查找;若X小于am,换上限h=m-1,到上半段继续查找;如此重复前面的过程直到找到或者l>h为止。如果l>h,说明没有此数,打印找不到信息,程序结束。

    方法一:

    package suanfa;

    import java.util.*;

    public class zheban {

    public static void main(String[]args)

    {

    int[]a={1,3,6,8,9,89,765};

    int time=search(a,8);

    System.out.println(time);

    }

    public static int search(int[]a,int key)

    {

    int low=1;

    int high=a.length;

    int mid;

    while(low

    {

    mid=(low+high)/2;

    if(key==a[mid-1])

    return mid-1;

    else if(key>a[mid-1])

    low=mid+1;

    else

    high=mid-1;

    }

    return 0;

    }

    }

    方法二:

    package m;

    import java.util.*;

    public class zheban {

    public static int[]data={1,3,5,7,9,11,22,44,67,89};

    public static void main(String[]args)

    {

    System.out.println("please enter the data you will find:");

    Scanner scan=new Scanner(System.in);

    int key=scan.nextInt();

    zheban(key,0,9);

    }

    public static boolean zheban(int key,int low,int high)

    {

    int l=low;

    int h=high;

    int mid;

    while(l

    {

    mid=(l+h)/2;

    if(data[mid]==key)

    {

    System.out.println("find "+"the data is in array "+(mid+1));

    return true;

    }

    else if(key

    h=mid-1;

    else if(key>data[mid])

    l=mid+1;

    }

    System.out.println("failed");

    return false;

    }

    }

    展开全文
  • java 折半查找法(二分查找)实例,需要的朋友可以参考一下
  • } //折半的第二种方式 public static int halfSerach_2(int[] arr,int key){ int min = 0,max = arr.length-1,mid; while(min){ mid = (max+min)>>1; if (key>arr[mid]) { min = mid+ 1; }else if(keyarr[mid]) { ...

    public class PaiXu {  public static void main(String[] args) {   /*int[] arr = {3,1,5,4,2,9};   int index = getIndex(arr,20);   System.out.println("index="+index);*/      int[] arr = {2,4,5,7,8,9,13,64};   int index = halfSerach_2(arr, 5);   System.out.println("index="+index);  }  //折半的第二种方式  public static int halfSerach_2(int[] arr,int key){   int min = 0,max = arr.length-1,mid;   while(min<=max){    mid = (max+min)>>1;    if (key>arr[mid]) {     min = mid+ 1;    }else if(keyarr[mid]) {     min = mid+ 1;    }else if(keymax){     return -1;    }    mid = (min+max)/2;   }   return mid;  }    //定义功能,获取key第一次出现在数组中的位置。如果是-1,那么代表该key在数组中不存在。  /*public static int getIndex(int[] arr,int key){   for (int i = 0; i < arr.length; i++) {    if (arr[i]==key) {     return i;    }   }   return -1;  }*/ }

    展开全文
  • 折半查找法是效率较高的一种查找方法。假设有已经按照从小到大的顺序排列好的五个整数a0~a4,要查找的数是X, 其基本思想是: 设查找数据的范围下限为l=0,上限为h=4,求中点m=(l+h)/2,用X与中点元素am比较,若X...
  • 下面的代码展示有简单查找法和二分查找法(也叫折半查找法),将进行依次分析。 /* 需求:查找某个元素在数组的位置 思路: 遍历数组的每个元素与所要查找的元素进行比较,相同时返回其索引值 步骤: 1.定义...
  • Java算法之折半查找法

    千次阅读 2020-04-26 10:43:49
    Java 算法之折半查找法 算法介绍 折半查找法要求线性表是有序的,即表记录按关键字有序(假设是递增有序的)。 折半查找的基本思路:设 R[low, ···, high] 是当前的查找区间,首先确定该区间的中间位置 mid = ...
  • // 顺序折半查找下标 public static int BinarySearch(int key, int[] num_list) { int smaller = 0; int bigger = num_list.length - 1; while(smaller <= bigger){ int mid = smaller + (bigger -...
  • 理论就是先找中间的,如果中间数大于大于目标数,那么就只需要找上半份数据折半查找就可以了。一直到找到为止,不用遍历所有数据,效率很高。实现折半查找的方法案例:packagejavalm;publicclassbiSearch{/***@...
  • java折半查找

    2022-01-10 21:33:38
    java折半查找
  • // 折半查找(二分查找法) /*--先从数组中间开始找,如果查找的数>中间值,则在后面找;如果查找的数<中间值,则在前面面找 --如果第一次找不到,则二分从后面(前面)的中间继续找,直到起始位置>...
  • JAVA实现折半查找算法

    2020-07-16 11:01:13
    JAVA实现折半查找算法 package demo; import java.util.Scanner; public class wdnmd2 { public static void main(String[] args) { int[] arr = {10, 20, 30, 40, 50, 60}; Scanner sc = new Scanner(System....
  • 对一组有序序列进行二分查找,找到元素并输出其索引下标,反之则查找失败
  • Java实现折半查找(二分查找)的递归和非递归算法转 : http://wintys.blog.51cto.com/425414/94051/***名称:BinarySearch*功能:实现了折半查找(二分查找)的递归和非递归算法.*说明:* 1、要求所查找的数组已有序,...
  • // 折半查找 public static void main(String[] args) { int[] arr = {2,6,3,1,8,9,10}; int index = binarySearch(arr,8); System.out.print(index);//输出 4 } /** * * @param arr 要进行查找的数组...
  • 算法复杂度:二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果xa[n/2],则只要在数组a的右半部搜索x.时间复杂度无非就是while循环的次数!总共有n个元素...
  • java 快速排序 折半查找的界面实现 (递归与分治
  • java-递归折半查找法

    2021-03-16 12:51:46
    import java.util.*;public class digui {public static int[]data={1,3,5,7,9,11,33,55,77,99};public static void main(String[]args){System.out.println("eter the data you will find:");Scanner sca...
  • java折半查找算法

    2021-04-17 02:47:29
    high 时表示查找区间为空,查找失败 } Java 代码: /** * 二分查找算法 * * @param srcArray 有序数组 * @param target 被查找的元素 * @retur......6 、不断利用循环和折半查找算法查找一个整数 n 是否在一个无序的 ...
  • 折半查找java版)

    2021-03-12 19:22:17
    /*** @author yuan*这个程序是演示折半查找的例子。*该算法是用递归实现的。*前提条件是该数组必须是有序的。*/public class a001 {/****/public a001() {// TODO Auto-generated constructor stub}/*** @param args...
  • 第1关:折半查找(二分查找) 本关任务:给定一个排好序的数组,然后输入另一个整数,判断该整数在数组的什么位置,返回该整数第一次出现的位置(位置从0开始),否则返回-1。 package step1; public class Task ...
  • 它的前期是线性表的记录必须是关键码有序(通常从大到小有序),线性表必须采用顺序存储、折半查找的基本思想是:取中间记录作为比较对象,若给定值与中间记录的关键字,则在中间记录的关键字相等,则查找成功;...
  • 本文主要向大家介绍了java语言之实现折半查找算法,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。折半查找(Binary Search)又称为二分查找,其要求数据序列呈线性结构,也就是经过排序的。对于没有...
  • Java折半查找法

    千次阅读 2018-05-19 16:42:52
    折半查找法:在计算机科学,折半搜索(英语:half-interval search),也称二分搜索(英语:binary search)、对数搜索(英语:logarithmic search),是一种在有序数组查找某一特定元素的搜索算法。搜索过程从...
  • 二分查找 又叫折半查找,是一种简单又快速的查找算法。它对要查找的序列有两个要求:一是该序列必须是有序的(即该序列的所有元素都是按照大小关系排好序的,升序和降序都可以,本文假设是升序排列的),二是该...
  • java中折半法查找方法

    2009-03-17 22:38:22
    在数组中用java折半法查找指定的数字,提供了2个方法,一个是递归另一个不是递归方法,好东西大家分享。。。
  • 输入10个无序的整数.(2) 用选择排序法将以上接收的10个无序整数按从大到小的顺序排序.(3) 要求任意输入一个整数,用折半查找法从排好序的10个数找出该数,若存在,在主函数输出其所处的位置,否则,提示未找到....
  • java实现二分查找(折半查找

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,525
精华内容 2,610
关键字:

java中的折半查找法

java 订阅