欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA基础之二分(折半)查找法

程序员文章站 2024-03-20 17:53:34
...

JAVA基础之二分查找

简介

二分查找又称折半查找,优点是比较次数少查找速度快,平均性能好,占用系统内存较少;
缺点是要求待查表为有序表,且插入删除困难.
因此折半查找方法适用于不经常变动而查找频繁的有序列表.

方法

首先,假设表中元素按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;
否则利用中间位置记录将表分为前\后两个字表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一字表.
重复以上过程,直到找到满足条件的记录,使查找成功,或直到字表不存在为止,此时查找不成功.

java代码示例

public static void main(String[] args){
    int[] array = new int[] {2, 3, 6, 7, 8, 9, 10, 11, 12, 13};
    int max = array.length - 1;
    int min = 0;

    int key = 22;
    int mid = (min + max)/2;

    while(key != array[mid]) {
        if(key > array[mid]) {
            min = mid + 1;
        }else if(key < array[mid]) {
            max = mid - 1;
        }
        //挪动完角标后  还要进行折半操作
        mid = (min + max)/2;

        //当最大角标 小于 最小角标的时候 说明数组中没有这个数
        if(max < min) {
            // 进到这里 说明没这个数
            mid = -1;
            break;
        }
    }
    System.out.println("这个数的角标是:" + mid);
}