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 快速排序的更多相关文章

  1. (转)Lua的table库函数insert、remove、concat、sort详细介绍

    原帖链接:http://www.jb51.net/article/64711.htm#comments 有增注标识的地方为额外注释,非原帖内容. 函数列表:(增注:只能用于数组!) table.ins ...

  2. Lua 自己实现排序sort比较方法,抛出错误invalid order function for sorting

    明天新功能就要上了,结果刚刚突然QA说项目抛出了错误.握草,吓得立马出了一身汗. 查了一下错误,发现可能是自己写的不稳定排序造成的.自己感觉应该就是.把排序方法写成稳定的之后,代码分离编译进手机,跑了 ...

  3. lua的table库

    函数列表: table.insert(table,[ pos,] value) table.remove(table[, pos]) table.concat(table[, sep[, i[, j] ...

  4. Lua的table库函数insert、remove、concat、sort详细介绍(转载)

    函数列表: table.insert(table,[ pos,] value) table.remove(table[, pos]) table.concat(table[, sep[, i[, j] ...

  5. lua 小技巧

    lua 小技巧 把常用的工具函数添加到 _G 里面,所有的文件都可以直接调用: ``` lua -- 在 a 文件中将工具函数添加到 _G: _G.IsEmptyStr = function(str) ...

  6. lua排序算法

    SEED = ; --随机序列 可任取 NUM = ; --排序规模 --随机序列 初始数据 function GenRnd( seed, n ) --生成随机数 data = {}; local r ...

  7. Redis | 第9章 Lua 脚本与排序《Redis设计与实现》

    目录 前言 1. Lua 脚本 1.1 Redis 创建并修改 Lua 环境的步骤 1.2 Lua 环境协作组件 1.3 EVAL 命令的实现 1.4 EVALSHA 命令的实现 1.5 脚本管理命令 ...

  8. lua执行字节码的过程介绍

    前面一篇文章中介绍了lua给下面代码生成最终的字节码的整个过程,这次我们来看看lua vm执行这些字节码的过程. foo = "bar" local a, b = "a& ...

  9. lua 学习笔记(1)

    一.lua函数赋值与函数调用         在lua中函数名也是作为一种变量出现的,即函数和所有其他值一样都是匿名的,当要使用某个函数时,需要将该函数赋值给一个变量,这样在函数块的其他地方就可以通过 ...

随机推荐

  1. NPOI Helper文档

    public class ExcelHelper { /// <summary> /// NPOI Excel转DataTable /// </summary> /// < ...

  2. 打水印 Imagename_biao是水印文件 ImgName是原图

    /** * 打水印 Imagename_biao是水印文件 ImgName是原图 * @param Imagename_biao * @param ImgName */ public static v ...

  3. C#多线程的异步委托/调用

    C#异步调用(Asynchronou Delegate) C#异步调用获取结果方法:主要有三种,也可以说是四种(官方说四种,电子书说三种),官方在MSDN上已经有详细的说明:链接 需要了解到获取异步执 ...

  4. C#删除文件

    string file =System.Web.HttpContext.Current.Server.MapPath(fileUrl); if (System.IO.File.Exists(file) ...

  5. LoadLibrary函数定位DLL顺序

    用LoadLibrary此函数来加载动态链接库到内存,Window 定位DLL的搜寻路径如下: 当前进程的可执行模块所在的目录. 当前目录. Windows 系统目录.GetSystemDirecto ...

  6. &&和||的妙用

    在js逻辑运算中,0."".null.false.undefined.NaN都会判为false,其他都为true 几乎所有语言中||和&&都遵循“短路”原理,如&a ...

  7. linux下服务端实现公网数据转发

    之前在腾讯上使用了一个免费的公网服务器,只有7天,linux系统. 其实有这样的想法,是因为有个研二的师弟问我怎么样才能让连个局域网的电脑通信. 我跟他说了两种方法,一种是找个公网服务器来转发数据,另 ...

  8. 尝试一下代码高亮。。成功的话明天写一篇blog

    using System; using System.Collections; using UnityEngine; public class Time : MonoBehaviour { // Us ...

  9. ASP.NET ZERO 学习 HangFire的使用二

    之前在ABP配置好了HangFire环境之后,那么如何才能添加Job到HangFire中让其执行呢 这就需要参考ABP的Background Jobs and Workers, 参考路径:http:/ ...

  10. python 传参open

    # Author:mologa k = "ab" for i in k: with open('%s.txt'%i,'w') as f: f.write("hello&q ...