From ef1310235f3821fddd8249da65f85eb191bf2ff3 Mon Sep 17 00:00:00 2001 From: sljtheultima Date: Tue, 2 Oct 2018 18:19:51 +0800 Subject: [PATCH] Ruby Quicksort --- Quicksort.rb | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Quicksort.rb diff --git a/Quicksort.rb b/Quicksort.rb new file mode 100644 index 0000000..040a2f6 --- /dev/null +++ b/Quicksort.rb @@ -0,0 +1,32 @@ +def quicksort(arr, lo, hi) + + if arr.length <= 1 + return arr + else + pivot = segment(arr, lo, hi) + if (lo < pivot-1) + quicksort(arr, lo, pivot-1) + end + if (hi > pivot) + quicksort(arr, pivot, hi) + end + return arr + end + +end + +def segment(arr, lo, hi) + pivot = arr[hi] + + left = lo + for element in (lo...hi) + if arr[element] <= pivot + arr[left], arr[element] = arr[element], arr[left] + left += 1 + end + end + + arr[left], arr[hi] = arr[hi], arr[left] + return left + +end