归并排序实现

来源:互联网 发布:linux服务器性能监控 编辑:程序博客网 时间:2024/05/21 22:33
Int = function (number)    return  math.floor(number)endfunction  merge(a,left,mid,right)    local  i,j,k= left,mid+1,1    local  b = {}    while (i<=mid and  j<=right) do        if  a[i]<a[j] then              b[k]= a[i]            i  = i + 1        else             b[k] = a[j]            j = j + 1        end         k  = k + 1    end     while i<=mid do        b[k]= a[i]        i  = i + 1        k  = k + 1    end    while  j<=right do         b[k] = a[j]        j  = j + 1        k  = k + 1    end     for m =1 ,k - 1 do         a[left] = b[m]         left = left + 1    endend--分治function mergesort(a,left,right)    if(right - left >=1) then        --分        local mid=Int((left+right)/2)        mergesort(a,left,mid)        mergesort(a,mid+1,right)        --合        merge(a,left,mid,right)    end end  --examplet = {9,8,7,6,5,4}mergesort(t,1,#t)for k,v in  ipairs(t) do     print(k,v)end
原创粉丝点击