Lua 二分法查找

-- 二分法查找
function ClientTestPage:binarySearch( value, t )

    local d = {} -- 默认数组,请使用(t),请注意数组必须为有序数组,不支持hash表查询
    for i = 1, 100 do
        d[i] = i
    end

    local minIndex = 1  -- 数组最小下标,lua默认从1开始
    local maxIndex = #d -- 数组最大下标
    local num = 1 -- 要查找的值,请使用(value)

    while true do
        local index = math.floor( ( minIndex + maxIndex ) /2) -- 计算数组中间元素下标

        if num == d[index] then
            return d[index]
        elseif num < d[index] then
            maxIndex = index - 1
        else
            minIndex = index + 1
        end
    end

    return nil
end

 

你可能感兴趣的:(LUA)