From b42f05f46dea9e81abf744d97d57f817b7c6139e Mon Sep 17 00:00:00 2001 From: Emily Vomacka Date: Mon, 23 Sep 2019 17:10:11 -0700 Subject: [PATCH 1/3] added selection sort to sort_by_length, all tests passing --- lib/sort_by_length.rb | 21 ++++++++++++++++++- ...rt_by_length.rb => sort_by_length_test.rb} | 0 2 files changed, 20 insertions(+), 1 deletion(-) rename test/{sort_by_length.rb => sort_by_length_test.rb} (100%) diff --git a/lib/sort_by_length.rb b/lib/sort_by_length.rb index a5713ad..f553186 100644 --- a/lib/sort_by_length.rb +++ b/lib/sort_by_length.rb @@ -3,5 +3,24 @@ # Time complexity: ? # Space complexity: ? def sort_by_length(my_sentence) - raise NotImplementedError, "Method not implemented" + sentence_array = my_sentence.split + length = sentence_array.length + (0...(length - 1)).each do |i| + min_index = i + j = i + 1 + while j < length + if sentence_array[j].length < sentence_array[min_index].length + min_index = j + end + j += 1 + end + if min_index != i + temp = sentence_array[min_index] + sentence_array[min_index] = sentence_array[i] + sentence_array[i] = temp + end + i += 1 + end + return sentence_array end + diff --git a/test/sort_by_length.rb b/test/sort_by_length_test.rb similarity index 100% rename from test/sort_by_length.rb rename to test/sort_by_length_test.rb From 360cb60603143eb0b39413a50333a04af554e38f Mon Sep 17 00:00:00 2001 From: Emily Vomacka Date: Mon, 23 Sep 2019 18:29:00 -0700 Subject: [PATCH 2/3] finished reverse_string method --- lib/reverse_sentence.rb | 43 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/lib/reverse_sentence.rb b/lib/reverse_sentence.rb index 3fe7cac..6c3424b 100644 --- a/lib/reverse_sentence.rb +++ b/lib/reverse_sentence.rb @@ -1,6 +1,41 @@ # A method to reverse the words in a sentence, in place. -# Time complexity: ? -# Space complexity: ? +# Time complexity: O(n^2), where n is length of my_sentence string +# Space complexity: O(1) def reverse_sentence(my_sentence) - raise NotImplementedError -end + if my_sentence == "" || my_sentence == nil + return my_sentence + end + a = 0 + max_index = my_sentence.length - 1 + b = max_index + while a < b do + temp = my_sentence[a] + my_sentence[a] = my_sentence[b] + my_sentence[b] = temp + a += 1 + b -=1 + end + i = 0 + while i < max_index do + if my_sentence[i] == " " + i += 1 + else + j = i + 1 + while j <= max_index && my_sentence[j] != " " do + j += 1 + end + word_end_index = j + j -= 1 + while i < j do + temp_i = my_sentence[i] + my_sentence[i] = my_sentence[j] + my_sentence[j] = temp_i + i += 1 + j -= 1 + end + i = word_end_index + end + end + return my_sentence +end + From 028134dffa0621de68c310db45f34374d1743113 Mon Sep 17 00:00:00 2001 From: Emily Vomacka Date: Mon, 23 Sep 2019 18:37:04 -0700 Subject: [PATCH 3/3] added complexities --- lib/reverse_sentence.rb | 2 +- lib/sort_by_length.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/reverse_sentence.rb b/lib/reverse_sentence.rb index 6c3424b..c08241c 100644 --- a/lib/reverse_sentence.rb +++ b/lib/reverse_sentence.rb @@ -1,5 +1,5 @@ # A method to reverse the words in a sentence, in place. -# Time complexity: O(n^2), where n is length of my_sentence string +# Time complexity: O(n^2), n == length of my_sentence string # Space complexity: O(1) def reverse_sentence(my_sentence) if my_sentence == "" || my_sentence == nil diff --git a/lib/sort_by_length.rb b/lib/sort_by_length.rb index f553186..044ec82 100644 --- a/lib/sort_by_length.rb +++ b/lib/sort_by_length.rb @@ -1,7 +1,7 @@ # A method which will return an array of the words in the string # sorted by the length of the word. -# Time complexity: ? -# Space complexity: ? +# Time complexity: O(n^2), n == number of words in the sentence +# Space complexity: 1 def sort_by_length(my_sentence) sentence_array = my_sentence.split length = sentence_array.length