快速排序lua实现 递归和栈两种实现
来源:互联网 发布:芈月到底爱谁知乎 编辑:程序博客网 时间:2024/05/21 09:51
- --------------------------------------------------------------
- function quicksort_recursive(data,left,right,func)
- local next = compare(data,left,right,func);
- if next ~= nil then
- quicksort(data,left,next-1,func);
- quicksort(data,next + 1,right,func);
- end
- end
- function quicksort_stack(data,left,right,func)
- local stack={}
- local index = compare(data,left,right,func);
- table.insert(stack,{index,left,right})
- local count = #(stack)
- while count > 0 do
- local keyindex = stack[1][1]
- local keyleft = stack[1][2]
- local keyright = stack[1][3]
- local indexleft = compare(data,keyleft,keyindex-1,func);
- if indexleft ~=nil and indexleft < keyindex then
- table.insert(stack,{indexleft,keyleft,keyindex-1})
- end
- local indexright = compare(data,keyindex + 1,keyright,func);
- if indexright ~=nil and indexright > keyindex then
- table.insert(stack,{indexright,keyindex + 1,keyright})
- end
- table.remove(stack,1)
- count = #(stack)
- end
- stack = nil
- end
- function compare(data,left,right,func)
- if left >= right then
- return nil
- end
- local key = data[left]
- local i = left;
- local j = right;
- while i < j do
- while j > left and i < j do
- if func(data[j],key) then--<
- data[i] = data[j]
- break;
- end
- j = j - 1
- end
- while i < right and i < j do
- if func(key,data[i]) then--<
- data[j] = data[i]
- break;
- end
- i = i + 1
- end
- data[i] = key
- end
- return i
- end
- function sortfun(a,b)
- return (a > b)
- end
- ----------------------------------------------------------------
- local data = {0,23,41,52,63,44,25,96,17,8,435,565,99,12,34}
- for _,value in pairs(data) do
- print(value)
- end
- quicksort_stack(data,1,#(data),sortfun)
- for _,value in pairs(data) do
- print(value)
- end
- io.read()
0 0
- 快速排序lua实现 递归和栈两种实现
- 快速排序lua实现 递归和栈两种实现
- lua实现快速排序
- 递归实现快速排序
- 快速排序+递归实现
- 递归实现快速排序
- 快速排序--递归实现
- 递归实现快速排序
- 快速排序。冒泡排序递归和非递归的实现
- 快速排序之Lua实现
- 快速排序算法递归和非递归实现 [# 29]
- 快速排序的递归和非递归实现
- 快速排序的递归和非递归实现
- 快速排序的递归和非递归实现
- 快速排序-递归和非递归的实现
- 快速排序的递归和非递归实现
- Java 实现快速排序 递归和非递归
- 快速排序的递归和非递归实现
- 算法竞赛入门经典(刘汝佳)——代码笔记
- IntelliJ IDEA 配置Maven(入门)
- 观察者设计模式举例
- mybatis 详解
- 【unity&游戏策划】技能 等级与经验值的 几种曲线方程式
- 快速排序lua实现 递归和栈两种实现
- 数据结构之二叉树(二叉查找树)
- Lua快速排序算法+代码
- Java for Web学习笔记(四六):WebSocket(3)Java Server
- 2017安卓面试题-JAVA篇
- dubbo的架构
- 数字游戏
- Java使用JNI调用C/C++(windows和android平台)
- AC之uva750(代码改编自167)