diff --git a/sorts/bubble_sort.py b/sorts/bubble_sort.py index e28e7aa4f..0be95af89 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 - - -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() - unsorted = [int(item) for item in user_input.split(',')] - print(bubble_sort(unsorted)) +def bubbleSort(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] + +# Driver code to test above +arr = [64, 34, 25, 12, 22, 11, 90] + +bubbleSort(arr) + +print ("Sorted array is:") +for i in range(len(arr)): + print ("%d" %arr[i]),