Module: AllSort

Defined in:
lib/all_sort.rb,
lib/all_sort/version.rb

Constant Summary collapse

VERSION =
"0.1.1"

Instance Method Summary collapse

Instance Method Details

#bubble_sort(arr) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/all_sort.rb', line 4

def bubble_sort arr
	n =arr.length
	loop do
		swapped = false
		(n-1).times do |i|
			if arr[i] < arr[i+1]
				arr[i],arr[i+1] = arr[i+1],arr[i]
				swapped = true
			end
		end
		break if not swapped
	end
	arr
end

#merge_sort(arr) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/all_sort.rb', line 24

def merge_sort arr
	return arr if arr.length <=1
	piv = (arr.length/2)
	r_array = merge_sort(arr[0..piv-1])
	l_array = merge_sort(arr[piv..arr.length])
	merger(r_array, l_array)
end

#merger(right, left) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/all_sort.rb', line 31

def merger right, left
	if right.empty?
		return left
	elsif left.empty?
		return right
	elsif left.first < right.first
		[left.first] + merger(left[1..left.length],right)
	else
		[right.first] + merger(left,right[1..right.length])
	end
end

#quick_sort(arr) ⇒ Object



18
19
20
21
22
23
# File 'lib/all_sort.rb', line 18

def quick_sort arr
	return [] if arr.empty?
	piv = arr.sample
	left, right = arr.partition(&piv.method(:>))
	return quick_sort(left)+[piv]+quick_sort(right)
end