Skip to content

Commit 197535c

Browse files
committed
Add ruby quicksort
1 parent 1b33b68 commit 197535c

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ _Sorting algorithms implemented in different languages (for hacktoberfest_ 😃_
1212
| Java | [`Bead Sort`](Java/BeadSort.java) [`Bogo Sort`](Java/BogoSort.java) [`Bubble Sort`](Java/BubbleSort.java) <br> [`Counting Sort`](Java/Counting%20Sort.java) [`Heap Sort`](Java/HeapSort.java) [`Insertion Sort`](Java/InsertionSort.java) <br> [`Merge Sort`](Java/MergeSort.java) [`Quick Sort`](Java/QuickSort.java) [`Radix Sort`](Java/RadixSort.java) <br> [`Selection Sort`](Java/SelectionSort.java) [`Shell Sort`](Java/ShellSort.java) [`Tim Sort`](Java/TimSort.java) <br> [`Comb Sort`](Java/CombSort.java) [`Binary Insertion Sort`](Java/BinaryInsertionSort.java) [`Gnome Sort`](Java/GnomeSort.java) |
1313
| Javascript | [`Bogo Sort`](Javascript/bogoSort.js) [`Counting Sort`](Javascript/countingSort.js) [`Heap Sort`](Javascript/HeapSort.js) [`Insertion Sort`](Javascript/Insertionsort.js) [`Merge Sort`](Javascript/MergeSort.js) <br> [`Quick Sort`](Javascript/Quicksort.js) [`Bubble Sort`](Javascript/bubbleSort.js) [`Shell Sort`](Javascript/shellSort.js ) [`Selection Sort`](Javascript/selectionSort.js) <br> [`Radix Sort`](Javascript/RadixSort.js) |
1414
| Python | [`Bogo Sort`](Python/BogoSort.py) [`Bubble Sort`](Python/BubbleSort.py) [`Bucket Sort`](Python/BucketSort.py) <br> [`Gnome Sort`](Python/GnomeSort.py) [`Insertion Sort`](Python/InsertionSort.py) [`Merge Sort`](Python/MergeSort.py) <br> [`Quick Sort`](Python/QuickSort.py) [`Radix Sort`](Python/RadixSort.py) [`Selection Sort`](Python/SelectionSort.py) <br> [`Binary Insertion Sort`](Python/BinaryInsertionSort.py) [`Heap Sort`](Python/heapSort.py) |
15-
| Ruby | [`Bubble Sort`](Ruby/bubble_sort.rb) [`Gnome Sort`](Ruby/gnome_sort.rb) [`Sort`](Ruby/sort.rb) [`Reverse sort`](Ruby/reverse.rb)
15+
| Ruby | [`Bubble Sort`](Ruby/bubble_sort.rb) [`Gnome Sort`](Ruby/gnome_sort.rb) [`Quick sort`](Ruby/quick_sort.rb) [`Sort`](Ruby/sort.rb) [`Reverse sort`](Ruby/reverse.rb)
1616
| Kotlin |[`Merge Sort`](Kotlin/MergeSort.kt) [`Bubble Sort`](Kotlin/BubbleSort.kt) [`Selection Sort`](Kotlin/selectionSort.kt) <br> [`Heap Sort`](Kotlin/HeapSort.kt) [`Insertion Sort`](Kotlin/InsertionSort.kt) [`Quick Sort`](Kotlin/QuickSort.kt) [`Bogo Sort`](Kotlin/BogoSort.kt)
1717
| Elixir | [`Selection Sort`](Elixir/selectionSort.exs)
1818

Ruby/quick_sort.rb

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
def quicksort(arr, left = 0, right = nil)
2+
right = arr.length - 1 if right.nil?
3+
4+
if left < right
5+
pivot = right
6+
7+
partition_index = partition(arr, pivot, left, right)
8+
9+
quicksort(arr, left, partition_index - 1)
10+
quicksort(arr, partition_index + 1, right)
11+
end
12+
arr
13+
end
14+
15+
def partition(arr, pivot, left, right)
16+
pivot_value = arr[pivot]
17+
index = left
18+
19+
(left..right).each do |i|
20+
if arr[i] < pivot_value
21+
arr[i], arr[index] = arr[index], arr[i]
22+
index += 1
23+
end
24+
end
25+
arr[right], arr[index] = arr[index], arr[right]
26+
index
27+
end

0 commit comments

Comments
 (0)