复制
收藏
提问
简洁

写个排序函数lua

2月前
全网
文档
学术
百科
知识库
时间不限
自动
回答简洁模式
深入研究一些

Lua 提供了多种排序方法,其中 table.sort 是最常用的排序函数。以下是一些基本的 Lua 排序函数示例:

基本的 table.sort 使用

table.sort 是 Lua 中用于对数组进行排序的函数。它接受一个数组和一个可选的比较函数作为参数。如果没有提供比较函数,它将按照数字或字母顺序进行排序。

local arr = {5, 2, 9, 1, 5, 6}
table.sort(arr)
-- arr 现在是 {1, 2, 5, 5, 6, 9}

自定义比较函数

你可以提供一个自定义的比较函数来控制排序的顺序。这个函数接受两个参数,如果第一个参数应该排在第二个之前,返回 true。

local function compare(a, b)
  return a < b
end

local arr = {5, 2, 9, 1}
table.sort(arr, compare)
-- arr 现在是 {1, 2, 5, 9}

选择排序

选择排序是一种简单的排序算法,它重复地从待排序的元素中找到最小(或最大)的元素,然后放到已排序序列的末尾。

local function selectionSort(arr)
  local n = #arr
  for i = 1, n-1 do
    local minIndex = i
    for j = i+1, n do
      if arr[j] < arr[minIndex] then
        minIndex = j
      end
    end
    if minIndex ~= i then
      arr[i], arr[minIndex] = arr[minIndex], arr[i]
    end
  end
end

local arr = {4, 2, 6, 3, 5}
selectionSort(arr)
-- arr 现在是 {2, 3, 4, 5, 6}

快速排序

快速排序是一种分而治之的排序算法,它使用一个分界值(pivot)将数组分为两部分,然后递归地对这两部分进行排序。

local function quickSort(arr, low, high)
  if low < high then
    local pi = partition(arr, low, high)
    quickSort(arr, low, pi-1)
    quickSort(arr, pi+1, high)
  end
end

local function partition(arr, low, high)
  local pivot = arr[high]
  local i = low - 1
  for j = low, high - 1 do
    if arr[j] < pivot then
      i = i + 1
      arr[i], arr[j] = arr[j], arr[i]
    end
  end
  arr[i+1], arr[high] = arr[high], arr[i+1]
  return i + 1
end

local arr = {10, 7, 8, 9, 1, 5}
quickSort(arr, 1, #arr)
-- arr 现在是 {1, 5, 7, 8, 9, 10}

这些示例展示了如何在 Lua 中实现基本的排序功能。你可以根据需要选择使用 table.sort 或者自己实现排序算法。12345678

你觉得结果怎么样?
Lua中如何实现冒泡排序?
Lua语言中如何编写选择排序?
Lua中插入排序的实现方法是什么?
Lua排序算法有哪些?
如何在Lua中实现快速排序?
Lua中堆排序的实现方式

以上内容由AI搜集生成,仅供参考

在线客服