zoukankan      html  css  js  c++  java
  • 二分查找——Python实现

    一、排序思想

         二分(折半)查找思想请参见:https://www.cnblogs.com/luomeng/p/10585291.html

    二、python实现

    def binarySearchDemo(arr, key):
        """
        python二分查找非递归方式
        :param arr:待排序列,有序集合
        :param key:带查找元素
        """
        low = 0
        high = len(arr) - 1
    
        while low <= high:
            mid = (low + high) // 2
    
            if key > arr[mid]:
                low = mid + 1
            elif key < arr[mid]:
                high = mid - 1
            else:
                return mid
        return -1
    
    
    def binarySearchDemo2(arr, start, end, key):
        """
        python二分查找递归方式
        :param arr:待排序列,有序集合
        :param start:待排序列,开始位置
        :param end:待排序列,结束位置
        :param key:带查找元素
        """
        if start > end:
            return -1
    
        mid = (start + end) // 2
    
        if key > arr[mid]:
            return binarySearchDemo2(arr, mid + 1, end, key)
        elif key < arr[mid]:
            return binarySearchDemo2(arr, start, mid - 1, key)
        else:
            return mid
    
    
    nums = [6, 12, 33, 87, 90, 97, 108, 561]
    
    # 非递归实现
    print(binarySearchDemo(nums, 90))
    
    # 递归实现
    print(binarySearchDemo2(nums, 0, len(nums) - 1, 90))
  • 相关阅读:
    每日日报
    Java学习
    Java学习
    Java学习
    Java学习
    Java学习
    Java学习
    Java学习
    Java学习
    JAVA日报
  • 原文地址:https://www.cnblogs.com/luomeng/p/10676380.html
Copyright © 2011-2022 走看看