当前位置:   article > 正文

Lua的排序算法——快速排序_lua 数组排序

lua 数组排序
  1. a = {1,3,5,2,6,8,10,3,6,20}
  2. --快速排序(以数组最左边的值为基准,比它小的放左边,比它大的放右边,然后再对左右两边的数组进行同样的操作,直到细分排列完成)
  3. local function KuaiSuPaiXu(arr, startIndex, endIndex)
  4. if startIndex >= endIndex then
  5. return
  6. end
  7. local lowIndex = startIndex
  8. local highIndex = endIndex
  9. local key = arr[lowIndex]
  10. while(lowIndex < highIndex) do
  11. while(arr[highIndex] >= key and highIndex > lowIndex) do --找到一个小于key的值放在左边
  12. highIndex = highIndex - 1
  13. end
  14. arr[lowIndex] = arr[highIndex]
  15. while(arr[lowIndex] <= key and highIndex > lowIndex) do --找到一个大于Key的放在右边
  16. lowIndex = lowIndex + 1
  17. end
  18. arr[highIndex] = arr[lowIndex]
  19. arr[lowIndex] = key --把key放在游标停止处
  20. end
  21. --对数组整体做一次排序,得到中间索引,切分成左右两个数组,然后再递归
  22. KuaiSuPaiXu(arr, startIndex, lowIndex - 1)
  23. KuaiSuPaiXu(arr, lowIndex + 1, endIndex)
  24. end
  25. local function PrintTab(t)
  26. for k, v in pairs(t) do
  27. print(v)
  28. end
  29. end
  30. print("KuaiSuPaiXu")
  31. KuaiSuPaiXu(a, 1, #a)
  32. PrintTab(a)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/935623
推荐阅读
相关标签
  

闽ICP备14008679号