zoukankan      html  css  js  c++  java
  • 基础算法 ---> 二分法

    二分法本质:

      二分法是以数组中间为分界线(这里k为中间索引),

      当array[k] > num 则继续搜索数组前半部分

      当array[k] < num 则继续搜索数组后半部分

     方法一: 

    def BinarySearch(array,num):
        low = 0
        height = len(array)-1
        while low <= height:
            mid = (low+height)//2
            if array[mid] < num:    
                low = mid + 1
    
            elif array[mid] > num:
                height = mid - 1
    
            else:
                return array[mid]
    
        return -1
    
    print (BinarySearch([1,2,3,34,56,57,78,87],87))

    方法二:

    def bs(array, num):
        while len(array):
            k = len(array) // 2
            if array[k] < num:
                array = array[k+1::]
            elif array[k] > num:
                array = array[0:k]
            else:
                return array[k]
        return
    
    array = [1, 2 ,3, 4, 5, 6, 8, 9]
    print(bs(array, 5))

    注意:二分法只能查找有序的数列      

  • 相关阅读:
    c语言之数据类型
    C语言之概述
    012.day12
    011.day011
    010.day010
    010.day08
    010.周六自习
    009.day07
    008.day06
    007.day05
  • 原文地址:https://www.cnblogs.com/bianjing/p/9481664.html
Copyright © 2011-2022 走看看