lua写排序算法

早在12年的时候,学过一个月的lua,当时看的是《programming in lua》,一直没用过,然后就忘了。现在我下定决心重新学习它。

时间久了,对编程的热情也随之消失殆尽,很难找回当初编程的乐趣了。近来一放假就玩英雄联盟,太浪费时间,玩个十来局一天就过去了,浑浑噩噩的,这实在不是我想过的。所以,今天我把它卸载了。如果你也是英雄联盟玩家,希望你不要沉迷其中。

从事游戏开发还不到一年,已经有点厌倦了,同事们一致认为游戏公司普遍很浮躁,有些小公司没有一点技术氛围。我知道的有些程序员,技术远远比普通游戏程序员强,由于靠谱的游戏公司太少而做其他开发了。

吐槽完了,用lua 写个选择排序:

--select sort

function select_sort(t)

for i=1, #t - 1 do

local min = i

for j=i+1, #t do

if t[j] < t[min]  then

min = j

end

end

if min ~= i then

t[min], t[i] = t[i], t[min]

end

end

end

tb = {77, 99, 2, 334, 22, 32, 9}

print("-------------before--------------")

print(table.concat(tb, " "))

print("-------------after---------------")

select_sort(tb)

print(table.concat(tb, " "))

table带有个sort函数,手册说明如下:

Sorts table elements in a given order, in-place,
from table[1] to table[n],
where n is the length of the table. If comp is
given, then it must be a function that receives two table elements, and returns true when the first is less than the second (so that not comp(a[i+1],a[i]) will
be true after the sort). If comp is not given, then the standard Lua operator < is
used instead.

The sort algorithm is not stable; that is, elements considered equal by the given order may have their relative positions changed by the sort.

因此你也可以这么写:

function comp(a, b)

return a < b

end

table.sort(tb, comp)

当然,通常你可以使用匿名的函数

table.sort(tb, function(a, b)

return a < b

end))

时间: 2025-01-11 20:28:21

lua写排序算法的相关文章

工作总结:MFC自写排序算法(升序)

最近一个需求里面需要实IP升序排序,用了qsort,结果是内部排序,甚至感觉排序结果不可预测性,于是自己写了一个外部排序. 需求如下:一个指针里面有N条记录,每条记录包含:IP,偏移地址,保留位,均占4个字节,且这N条记录需要按照升序排序. 算法如下: for (int i = 1; i < m_nCount; i++ )//sort { DWORD dwPre = NULL;//pCurAddr.GetIP()+i DWORD dwNex = NULL; char cTemp[12] = {0

排序算法(C语言+Python版)宝宝再也不怕面试官写排序算法了

直接插入排序 过程: 1. 数据可分看成两个部分,前面的数据是有序的 2. 从后面的数据取出一个元素,插到前面有序数据的合适位置 从右端开始查找,到找到比此元素大的时候,则此元素向后移动,以空出多余的空间来插入此元素. 3. 查找至最后. 例: 3 2 4 5 8 1 2 3 4 5 8 1 1 2 3 4 5 8 def insert_sort(lists): count = len(lists) for i in range(1, count): tmp = lists[i] j = i -

自己无聊脑袋短路想了一个排序算法。。

当时是写排序算法,写到shell算法,突然脑袋短路想到了这个思路 然后就试着写了下, 思路大体如下: 一列数列 例如:1,5,2,6,7,4,3 先看第一个数,1 它的前面没有比它大的数,后面没有比它小的数,若以它的位置就是这样 再看第二个数,5 它的前面没有比它大的数,后面有2,4,3三个数比它小,那他的位置是不是 应该向后移动3个单位.就是这样1, , , ,5, , 以此来看是不是就可以把数字的顺序就记录下来了,然而并不能直接在原来的数列中修改, 因为判断一个数之后需要原有的数列继续确定下

排序算法总结------选择排序 ---javascript描述

每当面试时避不可少谈论的话题是排序算法,上次面试时被问到写排序算法,然后脑袋一懵不会写,狠狠的被面试官鄙视了一番,问我是不是第一次参加面试,怎么可以连排序算法都不会呢?不过当时确实是第一次去面试,以此恶补排序算法. 一.基本排序算法:基本排序算法有冒泡排序,选择排序,插入排序. 选择排序算法思想:选择排序从数组的头开始,将第一个元素与其他元素进行比较,找到最小的元素,然后放到数组的第一个位置.然后再从第二个元素开始找比他小的元素,放到第二个位置,以此类推,重复上述步骤,当进行到数组的第二个位置时

数据结构与算法-排序算法-partial

前言 都什么时代了,还写排序算法的总结? 原因有二.一是别人的精彩永远是别人的,你只有鼓掌的份儿:有些事情实际动手去做了才会有所体会. 二是排序算法是一类基础类的算法,不光是IT从业者真正入门的门槛,也是一些高级算法的关键部分或算法评估的benchmark. 计划说明的算法内容有哪些?  算法的思想.Java代码实现和平均算法复杂度.算法运行完整示例. 参考文献有哪些? wiki[EB/OL] Shaffer C. A. Data Structure and Algorithm Analysis

用Java来写常见的排序算法

随着校招的临近 算法是校招中很重要的一个部分 总结了常见几种排序算法,各种算法的时间复杂度和空间复杂度大家也需要多了解下 package com.huwei.sort; /** * 各种排序算法 * * @author huwei * */ public class Sort { public static void main(String[] args) { int[] a = { 60, 57, 89, 47, 57, 98, 45, 35, 73 }; Sort sort = new So

JS写的排序算法演示

看到网上有老外写的,就拿起自已之前完成的jmgraph画图组件也写了一个.想了解jmgraph的请移步:https://github.com/jiamao/jmgraph 当前演示请查看:http://graph.jm47.com/example/sort.html <!doctype html> <html> <head> <meta content="text/html; charset=UTF-8" http-equiv="co

自己写的JS排序算法

这学期刚刚学完数据结构,之前就自己写了一点东西,现在整理一下. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>JS实现排序</title> <meta name

c/c++ 通用的(泛型)算法 之 只读算法,写算法,排序算法

通用的(泛型)算法 之 只读算法,写算法,排序算法 只读算法: 函数名 功能描述 accumulate 求容器里元素的和 equal 比较2个容器里的元素 写算法 函数名 功能描述 fill 用给定值,覆盖给定的范围的元素 fill_n 用给定值,覆盖给定开始位置后的,n个元素变 back_inserter 在容器末尾插入元素 copy 把容器1指定范围里的值拷贝给容器2,并返回指向容器2最后一个元素的下个元素 replace 用某个值替换掉给定范围的某个值 replace_copy 用某个值替