From 2bcf18e6becd23249d94fa6453e6d680b4b38675 Mon Sep 17 00:00:00 2001 From: Visiona Date: Wed, 4 Jan 2017 21:33:42 +0000 Subject: [PATCH 1/4] Submitted start of new project --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index dc1a8aa..90cd6dc 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ +Dariusz Biskupski + # assignment_sort Insertion and Merge Sort assignment From e0063b8aa728875ef11843c4d4e43cd32056b3e4 Mon Sep 17 00:00:00 2001 From: Visiona Date: Thu, 5 Jan 2017 20:43:29 +0000 Subject: [PATCH 2/4] Created insertion_sort, bubble_sort and merge_sort methods --- bubble_sort.rb | 16 ++++++++++++++++ insertion_sort.rb | 20 ++++++++++++++++++++ merge_sort.rb | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 bubble_sort.rb create mode 100644 insertion_sort.rb create mode 100644 merge_sort.rb diff --git a/bubble_sort.rb b/bubble_sort.rb new file mode 100644 index 0000000..e6fcb9a --- /dev/null +++ b/bubble_sort.rb @@ -0,0 +1,16 @@ +def bubble_sort(array) + temp_value = 0 + while temp_value != nil + temp_value = nil + (array.length - 1).times do |idx| + if array[idx] > array[idx + 1] + temp_value = array[idx] + array[idx] = array[idx + 1] + array[idx + 1] = temp_value + end + end + end + puts "#{array}" +end + +bubble_sort( [1,3,7,2,5] ) \ No newline at end of file diff --git a/insertion_sort.rb b/insertion_sort.rb new file mode 100644 index 0000000..48e93d6 --- /dev/null +++ b/insertion_sort.rb @@ -0,0 +1,20 @@ + +def insert(array, right_index, value) + i = right_index + while(i >= 0 && array[i] > value) + array[i+1] = array[i] + i -= 1 + end + array[i+1] = value +end + + +def insertion_sort(array) + 1.upto(array.length - 1) do |idx| + element = array[idx] + insert(array, idx - 1, element) + end + puts "#{array}" +end + +insertion_sort( [1,3,7,2,5] ) diff --git a/merge_sort.rb b/merge_sort.rb new file mode 100644 index 0000000..c4f9865 --- /dev/null +++ b/merge_sort.rb @@ -0,0 +1,39 @@ + +def merge(left_arr, right_arr) + new_arr = [] + if left_arr != nil && right_arr != nil + while left_arr.any? || right_arr.any? + if left_arr.empty? + new_arr << right_arr[0] + right_arr = right_arr[1..-1] + elsif right_arr.empty? + new_arr << left_arr[0] + left_arr = left_arr[1..-1] + elsif left_arr[0] > right_arr[0] + new_arr << right_arr[0] + right_arr = right_arr[1..-1] + else + new_arr << left_arr[0] + left_arr = left_arr[1..-1] + end + end + end + new_arr +end + +def merge_sort(array) + if array.length == 1 + array + else + left_arr = array[0...array.length/2] + right_arr = array[array.length/2..-1] + # // mergeSort() the left half of the array + # merge_sort(left_arr) + # // mergeSort() the right half of the array + # merge_sort(right_arr) + # // merge() the two halves + merge(merge_sort(left_arr), merge_sort(right_arr)) + end +end + +merge_sort( [1,3,7,2,5,4,30,22,80,50,6] ) From 69b320317cb17e6c968c82f5bb30c0f23992d6f3 Mon Sep 17 00:00:00 2001 From: Visiona Date: Mon, 16 Oct 2017 16:51:32 +0100 Subject: [PATCH 3/4] Updated README --- README.md | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 90cd6dc..5fa420d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,22 @@ -Dariusz Biskupski +# Implementing searching algorithms -# assignment_sort -Insertion and Merge Sort assignment +* bubble_sort.rb - implementation of bubble sort algorithm with an array +* insertion_sort.rb - implementation of insertion sort algorithm with an array +* merge_sort.rb - implementation of merge sort algorithm with an array + +## Getting Started + +If you want to quick run some the examples to see the code in action, run +``` +$ ruby example.rb +``` +from the project directory. + +## Authors + +* **Dariusz Biskupski** - *Initial work* - https://dariuszbiskupski.com + + +## Acknowledgments + +It is part of the assignment created for [Viking Code School](https://www.vikingcodeschool.com/) From eff8f5ded057d91f3e7b1fba4cb468155befc8b5 Mon Sep 17 00:00:00 2001 From: Visiona Date: Fri, 20 Oct 2017 19:59:05 +0100 Subject: [PATCH 4/4] Refactored few conditions --- bubble_sort.rb | 6 ++---- merge_sort.rb | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/bubble_sort.rb b/bubble_sort.rb index e6fcb9a..cbb10fa 100644 --- a/bubble_sort.rb +++ b/bubble_sort.rb @@ -4,13 +4,11 @@ def bubble_sort(array) temp_value = nil (array.length - 1).times do |idx| if array[idx] > array[idx + 1] - temp_value = array[idx] - array[idx] = array[idx + 1] - array[idx + 1] = temp_value + array[idx], array[idx + 1] = array[idx + 1], array[idx] end end end puts "#{array}" end -bubble_sort( [1,3,7,2,5] ) \ No newline at end of file +bubble_sort( [1,3,7,2,5] ) diff --git a/merge_sort.rb b/merge_sort.rb index c4f9865..383b518 100644 --- a/merge_sort.rb +++ b/merge_sort.rb @@ -1,7 +1,7 @@ def merge(left_arr, right_arr) new_arr = [] - if left_arr != nil && right_arr != nil + unless left_arr.nil? || right_arr.nil? while left_arr.any? || right_arr.any? if left_arr.empty? new_arr << right_arr[0]