找回密码
马上加入

QQ登录

只需一步,快速开始

搜索
发新帖

0

收听

2

听众

108

主题
发表于 2024-7-5 16:02:44 | 查看: 105| 回复: 1
二分法(也称为二分查找)是一种在有序数组中查找某一特定元素的算法。它通过每次将查找范围缩小一半来实现高效查找。以下是用 Lua 实现的二分查找算法:


  1. -- 二分查找函数
  2. function binarySearch(arr, target)
  3.     local left = 1
  4.     local right = #arr

  5.     while left <= right do
  6.         local mid = math.floor((left + right) / 2)

  7.         if arr[mid] == target then
  8.             return mid -- 找到目标,返回索引
  9.         elseif arr[mid] < target then
  10.             left = mid + 1 -- 目标在右半部分
  11.         else
  12.             right = mid - 1 -- 目标在左半部分
  13.         end
  14.     end

  15.     return -1 -- 未找到目标,返回 -1
  16. end

  17. -- 测试二分查找函数
  18. local sortedArray = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}
  19. local target = 7
  20. local result = binarySearch(sortedArray, target)

  21. if result ~= -1 then
  22.     print("元素找到,索引为: " .. result)
  23. else
  24.     print("元素未找到")
  25. end
复制代码

在这个实现中:

1. `binarySearch` 函数接受一个有序数组 `arr` 和一个目标值 `target`。
2. 使用 `left` 和 `right` 变量来表示当前查找范围的左右边界。
3. 在 `while` 循环中,通过计算中间位置 `mid` 来逐步缩小查找范围。
4. 如果找到目标值,则返回其索引;否则根据目标值与中间值的比较结果调整查找范围。
5. 如果循环结束后仍未找到目标值,则返回 `-1` 表示未找到。

你可以根据需要修改和扩展这个基本实现。

发表于 2024-7-5 16:41:23 IP属地:江苏省徐州市
666666666666
您需要登录后才可以回帖 登录 | 马上加入

QQ|Archiver|手机版|小黑屋|alg阿灵戈社区 ( 苏ICP备2023026137号-1|苏ICP备2023026137号-1 )

GMT+8, 2025-3-13 05:07 , Processed in 0.623668 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表