javascript,java,python分别实现二分法

2020-06-02  本文已影响0人  panergongzi

学习算法第一步,看点入门书,比较推荐《图解算法》这本书

书中第一张介绍了二分查找法和简单查找法,我们分别用javascript,java,python来实现这种算法,二分查找法运行时间O(n)

javascript实现二分查找算法 在0~1024 查找100 计算了多少次

function init(length, index) {

    if (index > length) {

        console.log("输入的数值太大超出计算范围");

        return

    }

    var intArr = [];

    for (let i = 0; i < length; i++) {

        intArr.push(i);

    }

    var count = 0;

    function binarySearch(min, max, index) {

        var milddel= Math.ceil((min + max) / 2);

        count++;

        if (index == milddel|| index == 0) {//防止栈溢出

            return milddel

        } else if (index < milddel) {

            return binarySearch(min, milddel, index)

        } else {

            return binarySearch(milddel, max, index)

        }

    }

    binarySearch(intArr[0], intArr[intArr.length - 1], index);

    console.log("一共运算了" + count + "次");

}

init(1024, 100);

结果

python实现二分查找算法 在0~1024 查找11 计算了多少次

# -*- coding: UTF-8 -*-

count=0

def binarySearch(min,max,index):

    milddel=(min+max)/2

    global count

    count+=1

    if milddel==index or index==min:

        return milddel

    elif milddel<index:

        binarySearch(milddel,max,index)

    else:

        binarySearch(min,milddel,index)

binarySearch(0,1024,11)

print("一共计算了"+str(count) +"次")

结果

java实现二分查找算法 在0~1024 查找1 计算了多少次

public class Binary {

int count=0;

    int min;

    int max;

    public int getCount() {

return count;

    }

public int binarySeach(int min, int max, int index){

int middle=(min+max)/2;

        this.count++;

        if(middle==index){

return middle;

        }else if(middle

return binarySeach(middle,max,index);

        }else{

return binarySeach(min,middle,index);

        }

}

public static void main(String[] args){

Binary binary=new Binary();

        int num=binary.binarySeach(0,1024,1);

        System.out.println("一共计算"+binary.getCount()+"次");

    }

}

结果

上一篇下一篇

猜你喜欢

热点阅读