Merge branch 'improved_sorting_algo' of git://github.com/YasirChoudhary/Python

This commit is contained in:
Harshil 2018-10-26 17:25:36 +02:00
commit f0d5bc6ece
2 changed files with 30 additions and 14 deletions

View File

@ -1,17 +1,33 @@
from __future__ import print_function from __future__ import print_function
def bubble_sort(arr):
n = len(arr) def bubble_sort(collection):
# Traverse through all array elements """Pure implementation of bubble sort algorithm in Python
for i in range(n):
# Last i elements are already in place :param collection: some mutable ordered collection with heterogeneous
for j in range(0, n-i-1): comparable items inside
# traverse the array from 0 to n-i-1 :return: the same collection ordered by ascending
# Swap if the element found is greater
# than the next element Examples:
if arr[j] > arr[j+1] : >>> bubble_sort([0, 5, 3, 2, 2])
arr[j], arr[j+1] = arr[j+1], arr[j] [0, 2, 2, 3, 5]
return arr
>>> bubble_sort([])
[]
>>> bubble_sort([-2, -5, -45])
[-45, -5, -2]
"""
length = len(collection)
for i in range(length-1):
swapped = False
for j in range(length-1-i):
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__': if __name__ == '__main__':
try: try:

View File

@ -31,7 +31,7 @@ def selection_sort(collection):
""" """
length = len(collection) length = len(collection)
for i in range(length): for i in range(length - 1):
least = i least = i
for k in range(i + 1, length): for k in range(i + 1, length):
if collection[k] < collection[least]: if collection[k] < collection[least]: