diff --git a/src/sorting/bubble_sort.py b/src/sorting/bubble_sort.py index 05c97e4..c5a6037 100644 --- a/src/sorting/bubble_sort.py +++ b/src/sorting/bubble_sort.py @@ -8,13 +8,26 @@ 2 3 1 4 2 1 3 4 1 2 3 4 +>>> sys.stdin = io.StringIO(chr(10).join(['4','1 2 3 4'])) # input +>>> bubble_sort() +0 """ def bubble_sort(): - n = input() + n = int(input()) inp_string = input() str_lst = inp_string.split(" ") - print(str_lst) + int_lst = list(map(int, str_lst)) + changes_count = 0 + for i in range(n-1): + for j in range(n-1-i): + if int_lst[j] > int_lst[j+1]: + int_lst[j],int_lst[j+1] = (int_lst[j+1],int_lst[j]) + changes_count += 1 + print(" ".join(map(str, int_lst))) + if changes_count == 0: + print(0) + if __name__ == "__main__": import doctest diff --git a/src/sorting/fast_hoare_sort.py b/src/sorting/fast_hoare_sort.py new file mode 100644 index 0000000..b57a188 --- /dev/null +++ b/src/sorting/fast_hoare_sort.py @@ -0,0 +1,28 @@ +""" +>>> import io, sys +>>> sys.stdin = io.StringIO(chr(10).join([\ +'5',\ +'5 4 3 2 1'\ +])) +>>> hoare_sort() +1 2 3 4 5 +""" + +def hoare_sort(): + n = int(input()) + inp_string = input() + input_array = list(map(int, inp_string.split(" "))) + + counter = 1 + while counter < len(input_array): + for i in range(len(input_array) - counter): + if input_array[i] > input_array[i + 1]: + input_array[i], input_array[i + 1] = input_array[i + 1], input_array[i] + + counter += 1 + + print(input_array) + +if __name__ == "__main__": + import doctest + doctest.testmod(verbose=True)