输入一个数组后,将它排序变成有序后,在用二分法去查找元素对应的下标。

1.首先二分法只能用于有序数组,其次二分法适合于大数据的查找,可以节约很多时间。

2.它的原理就是利用中间值去不断接近我们需要的值,例如 0,2,4,6,7;我们要找2的下标我们先把两端的下标拿出来,再算出中间的下标 2对应的元素4,用中间的元素去与我们要的值比较,因为2<4,那么下次我们把中间的下标赋值右端且减一,反之就赋给左端且加一。

3.

import java.util.Arrays;
import java.util.Scanner;
public class ISSA {

    public void sort(int[] arr) {//排序
    	for(int i=0;iarr[j])
    			{
    				int temp=arr[j-1];
    				arr[j-1]=arr[j];
    				arr[j]=temp;
    			}
    		}
    	}
    }
	@SuppressWarnings("resource")//关闭警告,supress:压抑
	public static void main(String[] args){
		int[] arr=new int[5];
		Scanner sc = new Scanner(System.in);
			for(int i=0;i<5;i++) { 
				arr[i]=sc.nextInt();
			}
		ISSA S=new ISSA();//相当与引用函数
		S.sort(arr);//
		System.out.print("新数组:");
		System.out.println(Arrays.toString(arr));
		ISSA F=new ISSA();
		F.find(arr);
	}	
	@SuppressWarnings("resource")
	public void find(int[] arr) {//二分法的实现
		System.out.print("请输入要查找的值:");
    	Scanner sc=new Scanner(System.in);
    	int x=sc.nextInt();
    	int left=0,right=arr.length;
    	while(left<=right)
    	{
    		int mid=(left+right)/2;
    		if(xarr[mid])
    		  left=mid+1;
    		 if(x==arr[mid])
    		  {
    			System.out.println(mid);
    			break;
    		  }
    	}
    	if(right<=left)
    	{
    		System.out.println("找不到");
    	}
    }
 }

你可能感兴趣的:(笔记,算法,java,算法,开发语言)