首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python-VBA编程500例-005-01(入门级)

  • 25-03-03 04:43
  • 4511
  • 14093
blog.csdn.net

目录

1、二分查找(验证存在性):

1-1、Python:

1-2、VBA:

2、相关文章:

个人主页:https://blog.csdn.net/ygb_1024?spm=1010.2135.3001.5421

欢迎志同道合者一起交流学习,我的QQ:94509325/微信号

        二分查找(Binary search)是一种非常高效的查找算法,主要用于在有序数组中查找特定元素的位置。具体应用包括以下几种:

1、验证存在性:对于有序数组,可以使用二分查找来确定某个元素是否存在,如果存在则返回其索引,否则返回-1。

2、查找边界值:对于有序数组中包含重复元素的情况,可以使用二分查找来确定某个元素第一次或最后一次出现的位置。通过修改二分查找的判断条件,可以实现这个功能。

3. 查找插入位置:如果要向有序数组中插入一个元素,可以使用二分查找来确定插入的位置。如果元素已经存在,则返回其索引;如果元素不存在,则返回应该插入的位置。

4. 查找最接近的元素:对于有序数组,可以使用二分查找来找到最接近某个给定值的元素。通过不断缩小查找范围,并记录最接近的元素,最终可以找到目标元素。

总的来说,二分查找适用于在有序数组中进行查找、插入和判断等操作,可以快速确定元素的位置,提高查找效率。

1、二分查找(验证存在性):
1-1、Python:
  1. # 1.问题描述:
  2. # 给定一个排序的整数数组(升序或降序)和一个要查找的目标整数target,查找到target第1次出现的下标(从0开始),如果target不存在于数组中,返回-1.
  3. # 2.问题示例:
  4. # 输入数组[3,5,6,8,10,10,11,24]和目标整数10,输出其所在的位置为4,即第1次出现在第4个位置;输入数组[3,5,6,8,10,10,11,24]和目标整数7,输出-1,即没有出现过7,返回-1.
  5. # 3.代码实现:
  6. class Solution:
  7. # 参数nums: 整数数组
  8. # 参数target: 目标整数
  9. # 返回值: 目标整数的下标
  10. def binarySearch(self, nums, target):
  11. return nums.index(target) if target in nums else -1 # 若目标整数存在于整数数组中,则返回目标整数所对应的下标;反之,则返回-1.
  12. # 主函数
  13. if __name__ == '__main__':
  14. solution =Solution() # 注意大小写
  15. nums = [3, 5, 6, 8, 10, 10, 11, 28, 24, 1]
  16. target = 7
  17. targetIndex = solution.binarySearch(nums, target)
  18. print("输入:nums=", nums, " ", "target=", target)
  19. print("输出:", targetIndex)
  20. # 4.运行结果:
  21. # 输入:nums= [3, 5, 6, 8, 10, 10, 11, 28, 24, 1] target= 7
  22. # 输出: -1
1-2、VBA:
  1. rem 自定义函数binarySearch,功能:实现二分查找
  2. Function binarySearch(nums As Variant, target As Integer) As Integer
  3. Dim left As Integer, right As Integer, mid As Integer
  4. left = LBound(nums)
  5. right = UBound(nums)
  6. While left <= right
  7. mid = (left + right) \ 2 ' 整除,避免浮点数
  8. If nums(mid) = target Then
  9. binarySearch = mid ' 找到目标,返回下标
  10. Exit Function
  11. ElseIf nums(mid) < target Then
  12. left = mid + 1 ' 在右侧继续搜索
  13. Else
  14. right = mid - 1 ' 在左侧继续搜索
  15. End If
  16. Wend
  17. binarySearch = -1 ' 没有找到,返回-1
  18. End Function
  19. rem 执行过程,功能:调用自定义函数binarySearch,并在立即窗口中输出结果
  20. Sub TestRun()
  21. Dim nums As Variant
  22. Dim target As Integer
  23. Dim targetIndex As Integer
  24. ' 定义并初始化数组
  25. nums = Array(3, 5, 6, 8, 10, 10, 11, 24)
  26. target = 7
  27. ' 调用 binarySearch 函数
  28. targetIndex = binarySearch(nums, target)
  29. ' 输出结果
  30. Debug.Print "输入:nums="; Join(nums, ", ") & " target=" & target
  31. Debug.Print "输出:" & targetIndex
  32. End Sub
  33. rem 输入:nums=3, 5, 6, 8, 10, 10, 11, 24 target=7
  34. rem 输出:-1

注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行TestRun程序,结果会展示在立即窗口中。

2、相关文章:

2-1、Python-VBA编程500例-003(入门级)

2-2、Python-VBA编程500例-004(入门级)

2-3、Python-VBA编程500例-005-02(入门级) 

2-4、Python-VBA编程500例-006(入门级) 

Python算法之旅:http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502 

个人主页:https://blog.csdn.net/ygb_1024?spm=1010.2135.3001.5421
欢迎志同道合者一起交流学习,我的QQ:94509325/微信号:

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览60120 人正在系统学习中
遨游码海,我心飞扬
微信名片
注:本文转载自blog.csdn.net的神奇夜光杯的文章"https://blog.csdn.net/ygb_1024/article/details/136715194"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top