L09. 算法导论

一. 数组操作 

  1. ,冒泡排序

复制代码
--[[
    冒泡排序算法原理:
        1.依次比较相邻的两个数,将小数放在前面,大数放在后面。
          即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。
          然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。
        2.至此第一趟结束,将最大的数放到了最后。
          在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数)
          将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的)
          第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。    
--]]

local t = {10,9,8,7}
local function 冒泡排序(t)
    local t = {table.unpack(t)}
    for i=1,#t-1 do   --#t-1: 循环到最后一次,第一个数不需要进行对比, 他是最小的
        for j=1,#t-i do    --#t-i: for循环循环完后最后一个数都是最大的所有不需要重复对比
            if t[j] > t[j+1] then
                t[j], t[j+1] = t[j+1], t[j]
            end    
        end
    end
    return t
end
print(冒泡排序(t))
复制代码

  2. 选择排序

复制代码
--[[
    选择排序算法原理:
        1.对比数组中前一个元素跟后一个元素的大小, 如果后面的元素比前面的元素小则用一个变量k来记住他的位置,
          接着第二次比较,前面"后一个元素"现变成了"前一个元素",继续跟他的"后一个元素"进行比较如果后面的元素比他要小则用变量k记住它在数组中的位置(下标),
          等到循环结束的时候,我们应该找到了最小的那个数的下标了,然后进行判断,如果这个元素的下标不是第一个元素的下标,
          就让第一个元素跟他交换一下值,这样就找到整个数组中最小的数了。然后找到数组中第二小的数,让他跟数组中第二个元素交换一下值,以此类推。
--]]

local t = {10,9,8,7}
local function 选择排序(t)
    local t = {table.unpack(t)}
      for i=1,#t-1 do
        min = i
        for j=i+1,#t  do
            if t[min] > t[j] then
                min = j
            end
        end
        t[i], t[min] = t[min], t[i]
    end
    return t
end
print(选择排序(t))
复制代码

   3.插入排序

复制代码
--[[
    插入排序算法原理:
        1.如果第一个元素大于第二个元素, 则将第二个元素插入到第一个元素前, 然后再判断插入的这个元素是否比前面的元素小, 如果大于则插入到前面元素的前面依次类推
    代码思路:
        1. 先将值保存下来, 然后挨个移位, 然后将保存的值赋值
--]]

local t = {2,1,3}
local function 插入排序(t)
    local t, j = {table.unpack(t)}
    for i=2,#t do
        local temp = t[i]
        j = i - 1 
        while j>=1 and t[j] >= temp do
            t[j+1] = t[j]
            j = j - 1
        end
        t[j+1] = temp
    end
    return t
end
print(插入排序(t))
复制代码

 

posted @   小书臣  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示