lua 脚本实现3种冒泡排序算法

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

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

你可能感兴趣的:(算法)