第一个算法是基础的冒泡排序算法,算法设计的种排序算法的基本算法
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