java的折半查询

本文详细介绍了折半查找算法的实现原理及步骤,并通过具体示例演示了如何使用Java编程语言来实现该算法。

(视频教程所学)记录所学,非解疑。。。。

 

(写在前面)

在做这个练习中,碰到了一个classpath的问题,由此得出一个结论:

在做测试的时候,如果结果不是你预想的值时,就要看看你的classpath值,确认自己是否测试其他的class文件。

因为当运行java的class文件时,虚拟机会先找在classpath中设置的文件夹,当在classpath配置的文件夹中找不到该文件时,才会在其他的文件中查找。

 

折半查询算法

/*
功能: 折半查找的实现
*/

/**
*@ author    Soul_Fighter
*@ 功   能        折半查找
*/

public class ArrayDemo
{
    public static void main(String[] args)
    {
        int[] arr = new int[]{2,5,8,10,16,22,24,27,30};
        int index = halfSearch(arr,24);
        System.out.println(index);
    }
    
    /**
    *@ author    Soul_Fighter
    *@ 功   能        折半查找
    *@ param        array
    *@ param        key
    *@ return        int
    */
    /*
    思路:折半查找
    1、定义三个角标变量,最大角标max,最小角标min,中间角标mid。
    2、定义一个循环,因为不确定第一次就能得出结果。这里用while循环比较好,因为只需判断一个条件arr[mid]是否等于key的值。即:arr[mid] != key。
    3、然后判断arr[mid]的值和key的值之间的关系。如果arr[mid]>key,则max = mid - 1;如果arr[mid] < key,则min = mid +1。中间值重新去值mid = (max+min)/2。
    4、因为min不能大于max的值,所以还要加一个判断。如果min<max程序继续,否则返回-1。
    */
    public static int halfSearch(int[] arr,int key)
    {
        int max,min,mid;
        max = arr.length - 1;
        min = 0;
        mid = (max+min)/2;

        while(arr[mid] != key)
        {
            if(arr[mid] > key)
                max = mid - 1;
            else if(arr[mid] < key)
                min = mid +1;

            if(min > max)
                return -1;
            mid = (max+min)/2;
        }
        return mid;
    }
}

 

 

转载于:https://www.cnblogs.com/soulfighter/p/3315534.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值