氣泡排序演算法 For ERL
阿新 • • 發佈:2018-11-24
(ERL的氣泡排序)Bubble Sorting IN ERLANG
實現原理
1. 從陣列的第一個元素arr[0]
開始,兩兩比較arr[n]
和arr[n+1]
,如果前面的數大於後面的數arr[n] > arr[n+1]
,那麼交換兩個元素的位置,把大的數往後移動
2. 依次經過一輪比較以後,最大的數將會被交換到最後的位置arr[n-1]
實現要素:
遞迴法
程式碼
run(OrderedList, []) -> OrderedList;
run(OrderedList, [H|T]) ->
{Rs, Max} = bubble_run (H, T, []),
run([Max]++OrderedList, Rs).
bubule_run(Max, [], T) -> {T, Max};
bubble_run(Max, [H|T], T1) ->
case Max >= H of
true ->
bubble(Max, T, [H|T1]);
_ ->
bubble(H, T, [Max|T1])
end.
取列表頭作為最大值和②值比較,如果列表頭值>②的值,則不用交換,把尾列表進行遞迴,同時把兩兩比較中最小的值保持到新列表中,目的是要把最大值從列表中分離出來,迴圈n-1次,氣泡排序至此結束