program quick_sort
implicit none
real :: x(100)
call random_seed()
call random_number(x)
print '(10f8.5)', qsort(x)
stop
contains
recursive function qsort(a) result(res)
real, intent(in) :: a(:)
real :: res(size(a))
if (size(a) < 2) then
res = a
else
res = (/ qsort( pack(a(2:), a(2:) < a(2)) ), a(1), qsort( pack(a(2:), a(2:) >= a(2)) ) /)
end if
return
end function qsort
end program quick_sort
cHJvZ3JhbSBxdWlja19zb3J0CiAgaW1wbGljaXQgbm9uZQogIHJlYWwgOjogeCgxMDApCiAgY2FsbCByYW5kb21fc2VlZCgpCiAgY2FsbCByYW5kb21fbnVtYmVyKHgpCiAgcHJpbnQgJygxMGY4LjUpJywgcXNvcnQoeCkKICBzdG9wCmNvbnRhaW5zCiAgcmVjdXJzaXZlIGZ1bmN0aW9uIHFzb3J0KGEpIHJlc3VsdChyZXMpCiAgICByZWFsLCBpbnRlbnQoaW4pIDo6IGEoOikKICAgIHJlYWwgOjogcmVzKHNpemUoYSkpCiAgICBpZiAoc2l6ZShhKSA8IDIpIHRoZW4gCiAgICAgcmVzID0gYQogICAgZWxzZQogICAgIHJlcyA9ICgvIHFzb3J0KCBwYWNrKGEoMjopLCBhKDI6KSA8IGEoMikpICksIGEoMSksIHFzb3J0KCBwYWNrKGEoMjopLCBhKDI6KSA+PSBhKDIpKSApIC8pCiAgICBlbmQgaWYKICAgIHJldHVybgogIGVuZCBmdW5jdGlvbiBxc29ydAplbmQgcHJvZ3JhbSBxdWlja19zb3J0