Suppose there is an array of length \(N\), then the bubble sort algorithm will make \(N+1\) passes over the full array. We point to the first, \(p_1\), and second, \(p_2\), positions. If \(p_1 > p_2\), then swap the elements. We iteratively perform the same function on the entire array.
We define a helper function, swap!
, which will swap elements in position u
and v
in the array, ary
. We use a Ref
which is kind of like a pointer so we can act directly on the array.
swap!(ary::Ref, u, v) = ary[][u], ary[][v] = ary[][v], ary[][u]
And then we define the bubble sort algorithm in the function bubble_sort
.
function bubble_sort!(ary)
n = length(ary)
for i in 1:n
for j in 1:(n-i)
ary[j] > ary[j+1] && swap!(Ref(ary), j, j+1)
end
end
ary
end