Skip to content
40 changes: 21 additions & 19 deletions sorts/double_sort.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
def double_sort(lst):
from typing import Any


def double_sort(collection: list[Any]) -> list[Any]:
"""This sorting algorithm sorts an array using the principle of bubble sort,
but does it both from left to right and right to left.
Hence, it's called "Double sort"
Expand All @@ -14,29 +17,28 @@ def double_sort(lst):
>>> double_sort([-3, 10, 16, -42, 29]) == sorted([-3, 10, 16, -42, 29])
True
"""
no_of_elements = len(lst)
no_of_elements = len(collection)
for _ in range(
int(((no_of_elements - 1) / 2) + 1)
): # we don't need to traverse to end of list as
for j in range(no_of_elements - 1):
if (
lst[j + 1] < lst[j]
): # applying bubble sort algorithm from left to right (or forwards)
temp = lst[j + 1]
lst[j + 1] = lst[j]
lst[j] = temp
if (
lst[no_of_elements - 1 - j] < lst[no_of_elements - 2 - j]
): # applying bubble sort algorithm from right to left (or backwards)
temp = lst[no_of_elements - 1 - j]
lst[no_of_elements - 1 - j] = lst[no_of_elements - 2 - j]
lst[no_of_elements - 2 - j] = temp
return lst
# apply the bubble sort algorithm from left to right (or forwards)
if collection[j + 1] < collection[j]:
collection[j], collection[j + 1] = collection[j + 1], collection[j]
# apply the bubble sort algorithm from right to left (or backwards)
if collection[no_of_elements - 1 - j] < collection[no_of_elements - 2 - j]:
(
collection[no_of_elements - 1 - j],
collection[no_of_elements - 2 - j],
) = (
collection[no_of_elements - 2 - j],
collection[no_of_elements - 1 - j],
)
return collection


if __name__ == "__main__":
print("enter the list to be sorted")
lst = [int(x) for x in input().split()] # inputing elements of the list in one line
sorted_lst = double_sort(lst)
# allow the user to input the elements of the list on one line
unsorted = [int(x) for x in input("Enter the list to be sorted: ").split() if x]
print("the sorted list is")
print(sorted_lst)
print(f"{double_sort(unsorted) = }")