lua 快速排序】的更多相关文章

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…
原帖链接:http://www.jb51.net/article/64711.htm#comments 有增注标识的地方为额外注释,非原帖内容. 函数列表:(增注:只能用于数组!) table.insert(table,[ pos,] value) table.remove(table[, pos]) table.concat(table[, sep[, i[, j]]]) table.sort(table[, comp]) 1. insert 和 remove 只能用于数组元素的插入和移出,…
明天新功能就要上了,结果刚刚突然QA说项目抛出了错误.握草,吓得立马出了一身汗. 查了一下错误,发现可能是自己写的不稳定排序造成的.自己感觉应该就是.把排序方法写成稳定的之后,代码分离编译进手机,跑了一下木有错误了.脑残的自己为何要对服务器传过来的有序数据进行排序呢?脑抽不明. 下文为转的别人总结的lua库.(该学习的地方还太多) lua的table库 函数列表: table.insert(table,[ pos,] value) table.remove(table[, pos]) table…
函数列表: table.insert(table,[ pos,] value) table.remove(table[, pos]) table.concat(table[, sep[, i[, j]]]) table.sort(table[, comp]) 1. insert 和 remove 只能用于数组元素的插入和移出, 进行插入和移出时,会将后面的元素对齐起来.     所以在 for 循环中进行 insert 和 remove 的时候要注意插入和移除时是否漏掉了某些项:        …
函数列表: table.insert(table,[ pos,] value) table.remove(table[, pos]) table.concat(table[, sep[, i[, j]]]) table.sort(table[, comp]) insert 和 remove 只能用于数组元素的插入和移出, 进行插入和移出时,会将后面的元素对齐起来. 所以在 for 循环中进行 insert 和 remove 的时候要注意插入和移除时是否漏掉了某些项: ,,,,,,} for i,…
lua 小技巧 把常用的工具函数添加到 _G 里面,所有的文件都可以直接调用: ``` lua -- 在 a 文件中将工具函数添加到 _G: _G.IsEmptyStr = function(str) return str==nil or type(str) ~= "string" or str == "" end _G.PrintObjPos = function(prefix, obj) prefix = prefix or "" local…
SEED = ; --随机序列 可任取 NUM = ; --排序规模 --随机序列 初始数据 function GenRnd( seed, n ) --生成随机数 data = {}; local r = math.random; math.randomseed( seed ); --不同的种子 生成不同的伪序列 , n do data[i] = r( n ); end return data; end --交换数组元素 function Swap( data, i, j ) local tmp…
目录 前言 1. Lua 脚本 1.1 Redis 创建并修改 Lua 环境的步骤 1.2 Lua 环境协作组件 1.3 EVAL 命令的实现 1.4 EVALSHA 命令的实现 1.5 脚本管理命令的实现 1.6 脚本复制 1.6.1 EVAL.SCRIPT FLUSH.SCRIPTLOAD 命令的复制 1.6.2 EVALSHA 命令的复制 2. 排序 2.1 SORT 命令的实现 2.2 SORT 命令的可选项 2.3 多个选项的执行顺序 最后 前言 参考资料:<Redis设计与实现 第二…
前面一篇文章中介绍了lua给下面代码生成最终的字节码的整个过程,这次我们来看看lua vm执行这些字节码的过程. foo = "bar" local a, b = "a", "b" foo = a 生成的字节码如下所示: 之前lua是在luaY_parser函数(入口)中完成了lua脚本的解析生成字节码的整个过程的,在生成了main func(过程见“lua解析赋值类型代码的过程“)后luaY_parser会返回一个Proto结构体指针tf,Pr…
一.lua函数赋值与函数调用         在lua中函数名也是作为一种变量出现的,即函数和所有其他值一样都是匿名的,当要使用某个函数时,需要将该函数赋值给一个变量,这样在函数块的其他地方就可以通过这个变量来调用这个函数. foo = * end; --标准用法,函数赋值 * x end; --常见用法,等价于上面 如果函数只是作为另外函数的参数或者子函数块时,即不涉及到外部调用时,不需要赋值(命名),可以直接使用 network = { {name = "lilei", ip =…
用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html  目录 马桶排序(令人作呕的排序) 冒泡排序(面试都要问的算法) 快速排序(见证亚当和夏娃的爱情之旅) 马桶排序(令人作呕的排序) 一.场景:期末考试完了,老师要将同学们的分数从高到低排序.假设班上有 5 名同学,分别考了 5 分.3 分.5 分.2 分和 8 分[满分:10 分],排序后的结果就是 8 5 5 3 2,…
上篇博客我们主要聊了比较高效的归并排序算法,本篇博客我们就来介绍另一种高效的排序算法:快速排序.快速排序的思想与归并排序类似,都是采用分而治之的方式进行排序的.快速排序的思想主要是取出无序序列中第一个值,然后通过比较将比该值小的元素放到该值的前方,将比该值大的元素放在该值的后方.这样一来该值前方的数据都要比该值小,该值后方的数据都要比该值大.然后再次对前半部分和后边半部分无序的数列进行上述操作,这样不断的操作,无序的序列的规模不断被缩小.等问题的规模被缩小到一定程度后,我们的序列就变的有序了.…
顾名思义,快速排序(quick sort)速度十分快,时间复杂度为O(nlogn).虽然从此角度讲,也有很多排序算法如归并排序.堆排序甚至希尔排序等,都能达到如此快速,但是快速排序使用更加广泛,以至于STL中默认排序方法就是快速排序.此外,快速排序的思想--划分(Partition)思想给人很多启发.下面以非降序排序进行介绍,不求有更深的理解,只求为自己做个简要笔记. 1)划分(Partition) 划分思想十分简单,却又十分重要,应用广泛.即:将待排序数组以某一个元素为键值(Key),将比此k…
在redis的官网上洋洋洒洒的大概提供了200多个命令,貌似看起来很多,但是这些都是别人预先给你定义好的,但你却不能按照自己的意图进行定制, 所以是不是感觉自己还是有一种被束缚的感觉,有这个感觉就对了... 一:Lua脚本 说来也巧,redis的大老板给了你解决这种问题的方法,那就是Lua脚本,而且redis的最新版本也支持Lua Script debug,这应该也是未来Redis的一 个发展趋势,要想学好Redis,必会Lua Script... 有趣的是,官网上还提供了一个视频教程教你如何进…
功 能: 快速排序 头文件:stdlib.h 用 法: void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *)); 参数:  1 待排序数组首元素的地址  2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针,用于确定排序的顺序 注意:数组中可以存储数字,字符,或者结构体都行. 数字: #include <stdio.h> #include <stdlib.h>…
一.Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个Master组件提供服务,其中正在使用的组件称为Active,另一个作为备份称为Standby,例如HDFS的NameNode.YARN 的ResourceManager.HDFS的web页面只有通过Active的NameNode才能正常访问,同样地,YARN的web页面也只有通过Active的ResouceManager才能正常访问. (1) HDFS HA的Web访问 正常使用Nginx的proxy_pass代理单…
快速排序(Quicksort)是对冒泡排序的一种改进.快速排序由C. A. R. Hoare在1962年提出. 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动. 每次尽可能地选择一个能够代表中值的元素作为关键数据,然后遵循普通快排的原则进…
小伙伴们再也不用为打印lua的Table对象而苦恼了, 本人曾也苦恼过,哈哈 不过今天刚完成了这个东西, 以前在网上搜过打印table的脚本,但是都感觉很不理想,于是,自己造轮子了~ 打印的效果,自己感觉还比较慢,不敢私藏,赶紧分享... 如有更好的更改,欢迎讨论,优化!!! 以下脚本保存到文件"dumpTable.lua" 之后要使用 直接加载就行了: --- -- @function: 获取table的字符串格式内容,递归 -- @tab: table -- @ind:不用传此参数…
我们来看看lua vm在解析下面源码并生成bytecode时的整个过程: foo = "bar" local a, b = "a", "b" foo = a 首先我们先使用ChunkySpy这个工具来看看vm最终会具体生成什么样的vm instructions 在这里,开头为[数字]的行是vm真正生成的字节码,我们看到一共生成了六行字节码.首先loadk将常量表中下标为1的常量即"bar"赋给寄存器0:然后setglobal将…
快速排序,只要学习过编程的人肯定都听说过这个名词,但是有时候写的时候还真蒙住了,网上搜罗了下以及查阅了"introduction to algorithm",暂时找到两种实现快排的方式,记录如下: 1.通过挖坑,分治的方式,需要左右交替遍历 思想如下: 代码实现: public static void quickSort1(int[] a, int s, int e) { if (s >= e) return; int m = a[s]; int i = s, j = e; wh…
怎么调试lua性能 我们的游戏使用的是Cocos2dx-lua 3.9的项目,最近发现我们的游戏.运行比较缓慢.想做一次性能优化了.其实主要分为GPU.CPU的分别优化.GPU部分的优化.网上有很多优化措施.但是CPU因为是每个项目都不一样所以也没有什么特别的通用的优化手段.软件运行的速度毕竟跟你的代码质量是直接挂钩的.常规的Lua优化方式.也就是很多地方在提的公共函数的本地化.比如说`local type = type`这种.不过在后来的调查中发现这种方式对于lua5.1效果比较明显.至于5.…
事情的经过 我们的项目中存在好几个战斗界面,不过界面中的内容略有不同.跟同事出去吃饭的时候,他问我.我们现在的战斗界面.有很多是重复的,但是也有偶尔几个地方不太一样.我在战斗过程中驱动这些界面的时候.还需要判断一下有没有这个函数,然后在选择调用它.比较麻烦,你说怎么样才能更好的规划这件事情呢?我第一个想到的就是抽离出来一个UI的父层对象.然后父层对象实现所有的函数.然后让父层函数hook住具体的页面.然后判断具体的页面究竟有没有这个函数,如果存在这个函数那么调用,否则什么都不做就行了.不过,我突…
没有想到我也做了一回标题党.其实这里边说的自动还是有夸大其词的部分.其实只是指定文件夹,然后根据指定文件夹数据,加载目录下边的内容而已. 怎么来进行Lua文件的加载 一般情况下,相关的功能需要给他创建一个相关的目录,然后直接通过我写的一个组件指定这个目录的加载位置就行了.不同的目录之间需要明确他们的加载顺序. 为什么要这么做? 加载的条理性.一般情况下,Lua文件会在需要的时候进行内存加载,这样比较混乱.说比较混乱的原因是没有明确的地方来控制加载的顺序,所以文件加载的顺序比较看脸. 加载内容的安…
第一次接触Linq是在使用C#的时候,这种语法,在处理列表数据非常方便.如果想了解Linq的更多内容可以百度一下Linq,不过你不了解也没关系,让我在Lua中给你展示一下Linq的魅力.简单点说,Linq就是让忽略掉循环的部分,让你更加专业相关的业务实现.算是一种语法糖. 简单举几个例子 1.输出一个类中的所有内容 local test1 = { Attribute1 = "Attribute1", Attribute2 = "Attribute2", Attrib…
项目说明 本行为树的代码使用Lua编写,所有的内容也建立的Lua的基础语法之上 因为公司项目需求,需要一套Lua的行为树代码,所以尝试从饥荒中抽离了行为树相关的代码.绝大多数节点行为与饥荒中相同,不过部分节点因为也许需求也有部分变动 通用说明 行为树状态基本分为4种 READY:准备状态,节点还没有被调用过.或者已经调用结束被Reset之后的状态 RUNNING:正在运行的状态,通常父节点会等待子节点Runing结束才会将自己的状态标示为结束,当然部分节点不会理会子节点的Runing状态 SUC…
一场电闪与雷鸣的结合, 公司原有服务器已经配置好nginx,需要重新装载lua模块,哈哈哈,无法无法.   安装LUA模块需要以下 pcre       ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/luajit         http://luajit.org/download.htmlngx_devel_kit  https://github.com/simpl/ngx_devel_kit/tagslua_nginx_modul…
相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 Python导出Excel为Lua/Json/Xml实例教程(三):终极需求 一.终极需求 前文的实例都是比较基础的例子,现在来一个贴近真实项目的实例. 下图是要操作的表格: 需求列表: Excel中导出的数据要有类型区分,比如int,string等 第一行为列的中文名称,这个名称只是给策划看,不导出 每张表右侧可以…
Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 Python导出Excel为Lua/Json/Xml实例教程(三):终极需求 一.什么是xlrd xlrd是python语言中读取excel的扩展工具,可以实现指定表单.指定单元格的读取. 二.安装xlrd 官网安装:到python官…
Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 Python导出Excel为Lua/Json/Xml实例教程(三):终极需求 一.Why 无论做什么事,一定有个理由,所以第一步,我来简述一下Why,为什么会有这个需求. 做过游戏的朋友应该知道,游戏当中很多的数据都是通过策划配置在…
快速排序(Quicksort)是对冒泡排序的一种改进.在大学学过之后现在基本忘了,最近在好多地方都看到说快速排序在面试会问到,于是自己也准备重新拾起以前忘记的东西来,慢慢的积累自己的基础知识.fighting 算法概念 快速排序由C. A. R. Hoare在1962(50多年了呢)年提出,它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有…