二分查找

二分查找

# -*- coding: utf-8 -*-
# @Time : 2022/3/28 15:20
# @Author : chuqianyu
# @FileName: 二分查找2.py
# @Software: PyCharm
# @Blog :https://home.cnblogs.com/u/chuqianyu
class Solution:
    def search(self, nums: list, target: int) -> int:
        # write code here
        # binarySearch
        kk = Solution.binarySearch(self, nums, 0, len(nums) - 1, target)
        return kk


    #         暴力求解
    #         for i in range(len(nums)):
    #             if target == nums[i]:
    #                 return i
    #         else:
    #             return -1

    #    binarySearch
    def binarySearch(self, arr, m, n, x): # m,n为下标,所以n  = len(arr)-1
        if n >= m:
            mid = m + ((n - m) >>1)  # 等效为 mid = int(m + (n-m)/2) #int为向下取整
            if arr[mid] == x:
                return mid
            elif arr[mid] > x:
                return Solution.binarySearch(self, arr, m, mid - 1, x)
            else:
                return Solution.binarySearch(self, arr, mid + 1, n, x)
        else:
            return -1

if __name__ == "__main__":
    print(int(3.5)) # 3向下取整
    s = Solution()
    x = int(input())  # 输入要查找的数
    arr = list(map(int, input().strip().split()))  # 有序数组
    m = 0
    n = len(arr) - 1
    index = s.search(arr, x)
    if index != -1:
        print("元素在数组中的索引为 %d" % index)
    else:
        print("元素不在数组中")
posted @ 2022-05-09 02:28  楚千羽  阅读(19)  评论(0编辑  收藏  举报