w3resource

Python: Sort a list of elements using Time sort


21. Time Sort

Write a Python program to sort a list of elements using Time sort.

Sample Solution:

Python Code:

# License https://bit.ly/2InTS3W
def binary_search(lst, item, start, end):
    if start == end:
        if lst[start] > item:
            return start
        else:
            return start + 1
    if start > end:
        return start

    mid = (start + end) // 2
    if lst[mid] < item:
        return binary_search(lst, item, mid + 1, end)
    elif lst[mid] > item:
        return binary_search(lst, item, start, mid - 1)
    else:
        return mid
def insertion_sort(lst):
    length = len(lst)

    for index in range(1, length):
        value = lst[index]
        pos = binary_search(lst, value, 0, index - 1)
        lst = lst[:pos] + [value] + lst[pos:index] + lst[index+1:]
    return lst


def merge(left, right):
    if not left:
        return right

    if not right:
        return left

    if left[0] < right[0]:
        return [left[0]] + merge(left[1:], right)

    return [right[0]] + merge(left, right[1:])

def time_sort(lst):
    runs, sorted_runs = [], []
    length = len(lst)
    new_run = [lst[0]]
    sorted_array = []

    for i in range(1, length):
        if i == length - 1:
            new_run.append(lst[i])
            runs.append(new_run)
            break

        if lst[i] < lst[i - 1]:
            if not new_run:
                runs.append([lst[i - 1]])
                new_run.append(lst[i])
            else:
                runs.append(new_run)
                new_run = []
        else:
            new_run.append(lst[i])

    for run in runs:
        sorted_runs.append(insertion_sort(run))

    for run in sorted_runs:
        sorted_array = merge(sorted_array, run)

    return sorted_array

user_input = input("Input numbers separated by a comma:\n").strip()
nums = [int(item) for item in user_input.split(',')]
print(time_sort(nums))

Sample Output:

Input numbers separated by a comma:
25, 45, 69, 79, 23
[23, 25, 45, 69, 79]

Flowchart:

Flowchart: Python Data Structures and Algorithms: Sort a list of elements using Time sort
Flowchart: Python Data Structures and Algorithms: Sort a list of elements using Time sort

For more Practice: Solve these Related Problems:

  • Write a Python program to implement Timsort from scratch and display the sorted subarrays (runs) detected.
  • Write a Python script to sort a list using Timsort and then compare its performance with merge sort on large datasets.
  • Write a Python program to simulate Timsort by dividing the list into runs and then merging them, printing the intermediate runs.
  • Write a Python function to implement a simplified version of Timsort and then validate the output against Python’s built-in sort.

Go to:


Previous: Write a Python program to sort a list of elements using Selection sort.
Next: Write a Python program to sort a list of elements using Topological sort.

Python Code Editor:

Contribute your code and comments through Disqus.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.