Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,42 @@
|
|||
function swap(a, i, j)
|
||||
a[i], a[j] = a[j], a[i]
|
||||
end
|
||||
|
||||
function pd!(a, first, last)
|
||||
while (c = 2 * first - 1) < last
|
||||
if c < last && a[c] < a[c + 1]
|
||||
c += 1
|
||||
end
|
||||
if a[first] < a[c]
|
||||
swap(a, c, first)
|
||||
first = c
|
||||
else
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function heapify!(a, n)
|
||||
f = div(n, 2)
|
||||
while f >= 1
|
||||
pd!(a, f, n)
|
||||
f -= 1
|
||||
end
|
||||
end
|
||||
|
||||
function heapsort!(a)
|
||||
n = length(a)
|
||||
heapify!(a, n)
|
||||
l = n
|
||||
while l > 1
|
||||
swap(a, 1, l)
|
||||
l -= 1
|
||||
pd!(a, 1, l)
|
||||
end
|
||||
return a
|
||||
end
|
||||
|
||||
using Random: shuffle
|
||||
a = shuffle(collect(1:12))
|
||||
println("Unsorted: $a")
|
||||
println("Heap sorted: ", heapsort!(a))
|
||||
Loading…
Add table
Add a link
Reference in a new issue