lua中氣泡排序的理解
阿新 • • 發佈:2019-01-07
氣泡排序的基本思想就是:從無序序列頭部開始,進行兩兩比較,根據大小交換位置,直到最後將最大(小)的資料元素交換到了無序佇列的隊尾,從而成為有序序列的一部分;下一次繼續這個過程,直到所有資料元素都排好序。
演算法的核心在於每次通過兩兩比較交換位置,選出剩餘無序序列裡最大(小)的資料元素放到隊尾
氣泡排序的平均時間複雜度為O(n^2)。
local printT = function(t) print("printT ---------------") table.walk(t, function(v, k) print(k, v) end) print("---------------") end function table.orderByBubbling(t) for i = 1, #t do for j = #t, i + 1, -1 do if t[j - 1] > t[j] then swap(t, j, j - 1) --printT(t) end end end return t end function swap(list,low,high) local temp = 0 temp = list[low] list[low] = list[high] list[high] = temp end function table.walk( t, fn ) for k, v in pairs( t ) do fn( v, k ) end end local test_list = {1,2,-2,3,-3444,-3344,3334,334,344,345,667,77} local num = #test_list table.orderByBubbling(test_list) -- 總結 print("after order--------") printT(test_list)