ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

二分查找

2022-05-09 03:01:03  阅读:151  来源: 互联网

标签:二分 arr return int self mid binarySearch 查找


二分查找

# -*- 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("元素不在数组中")

标签:二分,arr,return,int,self,mid,binarySearch,查找
来源: https://www.cnblogs.com/chuqianyu/p/16247769.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有