# How to sort an array without using sort method in Ruby?

2 min readJul 27, 2022

--

Many times we may come across a question like sorting an array without using sort methods available in ruby.

This blog will help you to sort the array without using the in build methods in ruby.

- Sort in Descending Order

`def sort_descending(array)`

return [] if array.empty?

is_sorted = true

while is_sorted

is_sorted = false

(array.size - 1).times do |i|

if array[i] < array[i + 1]

array[i], array[i + 1] = array[i + 1], array[i]

is_sorted = true

end

end

end

array

end

Explanation:

- Used while loop until array gets sorted
- Loop over the array for (array.size — 1) times
- If element is less than the next element, then swap the elements
- Continue loop until array gets sorted.

Usage

number_array = [57,2,30, 4, 1, 45, 8, 11]

char_array = ['d', 'v', 'r', 'f', 'b', 'a', 'p', 'x', 'z']2.5.3 :361 > sort_descending(number_array)

=> [57, 45, 30, 11, 8, 4, 2, 1]

2.5.3 :362 > sort_descending(char_array)

=> ["z", "x", "v", "r", "p", "f", "d", "b", "a"]

2. Sort in Ascending Order

`def sort_ascending(array)`

return [] if array.empty?

is_sorted = true

while is_sorted

is_sorted = false

(array.size - 1).times do |i|

if array[i] > array[i + 1]

array[i], array[i + 1] = array[i + 1], array[i]

is_sorted = true

end

end

end

array

end

Usage

number_array = [57,2,30, 4, 1, 45, 8, 11]

char_array = ['d', 'v', 'r', 'f', 'b', 'a', 'p', 'x', 'z']2.5.3 :361 > sort_ascending(number_array)

=> [1, 2, 4, 8, 11, 30, 45, 57]

2.5.3 :362 > sort_ascending(char_array)

=> ["a", "b", "d", "f", "p", "r", "v", "x", "z"]