码迷,mamicode.com
首页 > 编程语言 > 详细

lua 快速排序

时间:2015-06-30 23:22:53      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:


function partion(arr, left, right)
     local tmp = arr[left]        
     while left < right do    
        while left < right and arr[right] >= tmp do
           right = right - 1
        end            
        
        if left < right then
            arr[left] = arr[right]
            left = left + 1
        end            
        
        while left < right and arr[left] <= tmp do
           left = left + 1            
        end    
        
        if left < right then
            arr[right] = arr[left]                
            right = right - 1
        end                
    end 

    arr[left] = tmp            
    return left
end

function qsort(arr, left, right) 
    if left < right then
        local index = partion(arr, left, right)
        qsort(arr, left, index-1)        
        qsort(arr, index + 1, right)        
    end
end

function q_sort(arr, left, right) 
    if left >= right then
        return            
    end
    
    local i = left
    local j = right
    local key = arr[left]
    
    while i < j do    
        while i < j and key <= arr[j] do
            j = j - 1
        end        
        
        arr[i] = arr[j]
        
        while i < j and key >= arr[i] do
            i = i + 1
        end
        arr[j] = arr[i]
    end    
    
    arr[i] = key
    q_sort(arr, left , i-1)
    q_sort(arr, i+1 , right)
end

function show_table(tb) 
    for i = 1, #tb, 1 do
        print(tb[i])        
    end
end    

tb = {9,8,4,5,1,2,3}
q_sort(tb, 1, #tb)
show_table(tb)


 

lua 快速排序

标签:

原文地址:http://www.cnblogs.com/aceg/p/4611630.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!