黑马程序员技术交流社区

标题: 分享一个用二分法查找的例题 [打印本页]

作者: lvshen9    时间: 2017-2-22 11:15
标题: 分享一个用二分法查找的例题
分享一个用二分法查找的例题


[AppleScript] 纯文本查看 复制代码
package array;


/*
* 例题:
*    给定一个有序的数组,如果往该数组中存储一个元素,并保证这个数组还是有序的,
*    那么这个元素的存储的角标为如何获取。
*    {13,15,19,28,33,45,78,106};
*
*/
public class HalfSearch {

        public static void main(String[] args) {
                int[] arr={13,15,19,28,33,45,78,106};
                int index=myBinarySearch(arr,44);
                System.out.println(index);
        }
       
        //Arrays里有binarySearch()方法用于二分查找,这里我自定了一个二分查找方法
        public static int myBinarySearch(int[] arr,int key ){
                int start,mid,end;
                start=0;
                end=arr.length-1;
                mid=(start+end)/2;
               
                while(start<=end){
                        if(key>arr[mid])
                                start=mid+1;
                        else if(key<arr[mid]){
                                end=mid-1;
                        }
                        else
                                return mid;
                        mid=(start+end)/2;

                }
                return mid+1;
        }
}


作者: 香草芭芙    时间: 2017-2-22 14:35
[Java] 纯文本查看 复制代码
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Demo_test01 {
    public static void main(String[] args) {
        int key = 20;
        Integer[] arr =  {13,15,19,28,33,45,78,106};
        List<Integer> list  = Arrays.asList(arr);
        int binarySearch = Collections.binarySearch(list, key);
        int abs = Math.abs(binarySearch+1);
        System.out.printf("插入点角标为%d\n", abs);
    }
}

作者: lvshen9    时间: 2017-2-22 18:09
香草芭芙 发表于 2017-2-22 14:35
[mw_shl_code=java,true]import java.util.Arrays;
import java.util.Collections;
import java.util.List; ...

用list集合可以扩容

作者: zhangkaitong    时间: 2017-2-22 21:07
66666666666666




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2