1. --[[
  2. 稳定的多维条件数组排序
  3. 由调用者保证tbCondition的元素个数大于等于维度nDimension
  4. ]]
  5. function MutilArraySort(tbCondition, nDimension)
  6. local tbResult = {}
  7. for i = 1, #tbCondition do
  8. local nInsert = 0
  9. local nLocal = 1
  10. for k = 1, nDimension do
  11. local function DimensionCompare(j)
  12. if j > #tbResult then
  13. return #tbCondition + 1
  14. end
  15. if tbCondition[i][k] > tbCondition[tbResult[j]][k] then
  16. return j
  17. elseif tbCondition[i][k] == tbCondition[tbResult[j]][k] then
  18. return 0, j
  19. else
  20. return DimensionCompare(j + 1)
  21. end
  22. end
  23. nInsert, nLocal = DimensionCompare(nLocal)
  24. if nInsert > 0 and nInsert <= #tbResult then
  25. table.insert(tbResult, nInsert, i)
  26. break
  27. elseif nInsert > #tbResult then
  28. table.insert(tbResult, i)
  29. break
  30. end
  31. if k == nDimension then
  32. table.insert(tbResult, i)
  33. break
  34. end
  35. end
  36. end
  37. return tbResult
  38. end
  39. tbCondition = {
  40. [1] = { 1, 2, 6, 6 },
  41. [2] = { 5, 2, 8, 5 },
  42. [3] = { 5, 2, 7, 6 },
  43. [4] = { 5, 2, 1, 4 },
  44. }
  45. local tbResult = MutilArraySort(tbCondition, 4)
  46. for i = 1, #tbResult do
  47. print(tbResult[i])
  48. end

转载于:https://blog.51cto.com/rangercyh/1160537

稳定多维table排序相关推荐

  1. JavaScript Table排序

    序二(09/05/03) 近来还是那么忙,趁五一更新一下程序吧. 这个版本主要增加和改进了以下东西: 1,对字符串改用localeCompare来比较: 2,一次排序中能使用多个排序对象(用于值相等时 ...

  2. [Python学习] 专题五.列表基础知识 二维list排序、获取下标和处理txt文本实例

    通常测试人员或公司实习人员需要处理一些txt文本内容,而此时使用Python是比较方便的语言.它不光在爬取网上资料上方便,还在NLP自然语言处理方面拥有独到的优势.这篇文章主要简单的介绍使用Pytho ...

  3. c++ 二维数组 排序_【算法】排序算法之计数排序

    前几回,我们已经对[算法]排序算法之冒泡排序.[算法]排序算法之插入排序.[算法]排序算法之希尔排序.[算法]排序算法之选择排序.[算法]排序算法之快速排序.[算法]排序算法之归并排序.[算法]排序算 ...

  4. C++ 二维vector排序(sort用法)

    C++二维vector排序 sort 函数的使用 sort 函数的使用 自定义排序函数 (目标:对 二维vector<vector> points中第二个元素进行排序) static bo ...

  5. html表格td向下排序,jquery实现的table排序功能示例

    本文实例讲述了jquery实现的table排序功能.分享给大家供大家参考,具体如下: Document div { width: 1024px; margin: 0 auto; /*div相对屏幕左右 ...

  6. bootstrap table排序php,BootStrap+Table排序分页序号

    这次给大家带来BootStrap+Table排序分页序号,BootStrap+Table排序分页序号的注意事项有哪些,下面就是实战案例,一起来看一下. 前言在使用bootstrap table的时候难 ...

  7. 二维列表排序 python_python教程:[74]列表排序

    列表排序,做数据经常用到的一个方法,在python中想实现排序有时候觉得挺难,比如按照行排序或按照列排序,写起来都不简单,今天在这里总结一下在python中实现排序的所有方法,如有不全,请下面留言. ...

  8. 华为OD机试-运维日志排序

    文章目录 题目描述 输入描述 输出描述: 示例 Java 代码实现 题目描述 运维工程师采集到某产品线网运行一天产生的日志n条,现需根据日志时间先后顺序对日志进行排序,日志时间格式为H:M:S.N. ...

  9. DWZ (JUI) 教程 table 排序

    DWZ (JUI) 教程 table 排序 最近有朋友问到dwz 排序的问题,我简单说一下.dwz排序是后台排序,不是前台的js排序,他的流程和搜索,分页是一样的,当你点击排序的按钮时,从新发送请求刷 ...

最新文章

  1. 云数据中心异构资源管理大有可为
  2. Python有哪些作用
  3. loadrunner脚本设计:集合点(批量放行实现真正的并发)
  4. TCP/IP协议读书笔记(1)
  5. 防止linux系统文件被误删除,Linux系统防止误删除文件
  6. 【深度优先搜索】计蒜客:最大蛋糕(最大连通块)
  7. IOS - 单例模式+多线程
  8. java中POJO、PO、BO、VO、DTO和DAO的概念
  9. 一维码二维码识别(opencv c++)
  10. 最全搭建自己的SOCKS代理服务器
  11. android carlife 源码,CarLife开发总结
  12. T40之小黑不能充电记
  13. ad17如何生成坐标文件_pcb如何导出坐标文件
  14. linux下socket编程带来的尴尬
  15. java实验 类和对象_java 实验(三) 类和对象
  16. python安装h5py
  17. python 用QQ邮箱发送邮件
  18. Android 安装app
  19. 为什么每个人都该知道阿兰·图灵?
  20. 基于PLC十字路口交通灯控制(可计算车流量、调整时间等)课程设计毕业设计

热门文章

  1. VTK:可视化算法之DisplacementPlot
  2. VTK:可视化之VisualizeImageData
  3. VTK:Qt之ShareCameraQt
  4. VTK:绘图之HistogramBarChart
  5. OpenCV使用F变换过滤
  6. QT的QInputDialog类的使用
  7. 第一天:制定项目章程
  8. 07_数据库创建,添加c3p0操作所需的jar包,编写c3p0-config.xml文件,编写User.java,编写jdbcUtils.java实现操作数据库的模板工具类,UserDao编写,Dao
  9. Rotation Rose各部分的名称
  10. Mysql8 NDB集群二进制方式免安装配置图解