java 数据结构算法

java算法(二)折半查找

2017-05-14  本文已影响22人  过期的薯条

1.引言

折半查找算法,算是这本书中最简单的算法,以前在大学学的时候用的c语言编写的算法。换成用java来写,发现代码量不是一般的少。

2.正题

折半算法的核心思想:首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将序列分成前、后两个序列,如果中间位置记 录的关键字大于查找关键字,则进一步查找前一序列,否则进一步查找后一序列。重复以上过程,直到找到满足条件的记录,使查找成功,或直到序列不存在为止,此时查找不成功。

要求:待查找的序列是:一个顺序序列。

代码如下:

/**
 * Created by wxy on 2017/5/14.
 * 折半查找
 */
public class BinarySerach {

    public static void main(String args[]){
        int math=56;
        List<Integer>mlist=new ArrayList<>();
        for (int i=0;i<100;i++){
            mlist.add(i);
        }
        int low=0;
        int hight=mlist.size()-1;
        int half = -1;
        while (low<=hight){
            half=(low+hight)/2;
            if (mlist.get(half)>math){
                hight=half;
            }else if (mlist.get(half)<math){
                low=half;
            }else {
                break;
            }
        }
        System.out.println(half);
    }
}

时间复杂度O()=O(logn)

上一篇下一篇

猜你喜欢

热点阅读