第一个算法是基础的冒泡排序算法,算法设计的种排序算法的基本算法

local array = {6,16,19,12,15,13,30,32,21,24,1,7,10}

for i=1,#array do

  for j=i+1,#array do
   if array[i] < array[j] then
       array[i], array[j] = array[j], array[i]
   end
  end
end
for k ,v in pairs(array) do
    print("k = " .. k .. " v = " .. v)
end

第二算法,是冒泡的延伸,倒着比较,相邻连个做比较
local array1 = {6,16,19,12,15,13,30,32,21,24,1,7,10}
for i=1,#array1 do
    for j = #array1,i+1, -1 do
    if array1[j] < array1[j-1] then
       array1[j],  array1[j-1] = array1[j-1], array1[j]
   end
   end
end
for k ,v in pairs(array1) do
    print("k1 = " .. k .. " v1 = " .. v)

end

第三种算法,是第二种算法的延伸,如果在第五次排序的时候,该次排序就已经排好序,第二种算法还是会继续比较,从而浪费时间,第三种算法是在两两之间不用移动则说明顺序已经排好

local flag = true
local array2 = {6,16,19,12,15,13,30,32,21,24,1,7,10,9}
for i=1,#array2 do
 if flag then
    flag = false
    for j = #array2,i+1, -1 do
    if array2[j] < array2[j-1] then
       array2[j], array2[j-1] = array2[j-1], array2[j]
       flag = true
   end
   end
 else
   print("i = " .. i)
   break;
 end
end
for k2 ,v2 in pairs(array2) do
    print("k2 = " .. k2 .. " v2 = " .. v2)
end
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐