diff --git a/sorts/bubble_sort.py b/sorts/bubble_sort.py index e28e7aa4f..359a4b21d 100644 --- a/sorts/bubble_sort.py +++ b/sorts/bubble_sort.py @@ -1,52 +1,23 @@ -""" -This is pure python implementation of bubble sort algorithm - -For doctests run following command: -python -m doctest -v bubble_sort.py -or -python3 -m doctest -v bubble_sort.py - -For manual testing run: -python bubble_sort.py -""" - from __future__ import print_function - -def bubble_sort(collection): - """Pure implementation of bubble sort algorithm in Python - - :param collection: some mutable ordered collection with heterogeneous - comparable items inside - :return: the same collection ordered by ascending - - Examples: - >>> bubble_sort([0, 5, 3, 2, 2]) - [0, 2, 2, 3, 5] - - >>> bubble_sort([]) - [] - - >>> bubble_sort([-2, -5, -45]) - [-45, -5, -2] - """ - length = len(collection) - for i in range(length): - swapped = False - for j in range(length-1): - if collection[j] > collection[j+1]: - swapped = True - collection[j], collection[j+1] = collection[j+1], collection[j] - if not swapped: break # Stop iteration if the collection is sorted. - return collection - - +def bubble_sort(arr): + n = len(arr) + # Traverse through all array elements + for i in range(n): + # Last i elements are already in place + for j in range(0, n-i-1): + # traverse the array from 0 to n-i-1 + # Swap if the element found is greater + # than the next element + if arr[j] > arr[j+1] : + arr[j], arr[j+1] = arr[j+1], arr[j] + return arr + if __name__ == '__main__': try: raw_input # Python 2 except NameError: raw_input = input # Python 3 - - user_input = raw_input('Enter numbers separated by a comma:\n').strip() + user_input = raw_input('Enter numbers separated by a comma:').strip() unsorted = [int(item) for item in user_input.split(',')] - print(bubble_sort(unsorted)) + print(*bubble_sort(unsorted), sep=',')