Mercurial > lbo > hg > juliaplay
view quicksort.jl @ 0:d0c890aae379
Initial commit
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Sat, 26 Nov 2022 09:23:14 +0100 |
parents | |
children | ed34696a9d9b |
line wrap: on
line source
function partition(v::Vector{T}, from::Int, to::Int)::Int where {T} if to-from < 1 return from end lo, hi = from-1, to+1 mid = round(Int, (lo+hi)/2) piv = v[mid] while lo < hi lo += 1 while v[lo] < piv lo += 1 end hi -= 1 while v[hi] > piv hi -= 1 end if lo >= hi return hi end v[lo], v[hi] = v[hi], v[lo] end lo end function quicksort!(v::Vector{T}, from=1, to=-1) where {T} if to < 0 to = length(v) end if to-from == 1 return else mid = partition(v, from, to) @show (from, to, mid) if from < mid quicksort!(v, from, mid) end if mid+1 < to quicksort!(v, mid+1, to) end end end