• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Lua中数组全排序

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

先看代码:

 1 function permgen (a, n)
 2     if 0 == n then
 3         printResult(a)
 4     else
 5         for i=1,n do
 6         a[n], a[i] = a[i], a[n]
 7         permgen(a, n -1)
 8         a[n], a[i] = a[i], a[n]
 9         end
10     end
11 end
12 
13 function printResult (a)
14     for i,v in ipairs(a) do
15         io.write(v, "  ")
16     end
17     io.write("\n")
18 end

代码很简单不到20行,由于新手,思考了好久,算是差不多懂了,小记一下。

函数中a表示的是输入的数组,n表示数组中元素个数。

递归终止条件是n=0,这个算法的思想就是:依次将第一个数与最后一个数交换,然后固定,得到前面n-1个数的全排序。printResult函数就是直接输出一个数组。

当n=1时,先将a[1]和a[1]交换,还是自己,接着判断,就输出当前的a;

当n=2时,a:先将a[1]和a[2]交换,将a[1]放到最后固定。

              b:此时得到n=1时候的数组,就可以直接输出,结果为a[2] a[1],然后返回。

              c: 将a[1]和a[2]的位置换回。

              d:for循环继续执行,a[2]和a[2]自身交换,此时数组:a[1] a[2],接着得到n=1,跳转到b:,直接输出a,为a[1] a[2]

当n=3时,也是类似,先将a[1]月a[3]交换,然后固定最后一位,就得到n = 2,以此类推即可。

 

 

author:good90


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Nginx通过Lua+Redis实现动态封禁IP发布时间:2022-07-22
下一篇:
windows下配置lua环境发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap