Here's a Python function that sorts a list of numbers in ascending order. Identify the time complexity of this function. Then optimize this function and explain why it is faster. Don't use Python's in-built sort() method.
defsort_list(list_to_sort):"""
This function sorts a list of numbers in ascending order using the bubble sort algorithm.
Args:
list_to_sort: A list of numbers to be sorted.
Returns:
A new list with the numbers sorted in ascending order.
"""# Create a copy of the list to avoid modifying the original
sorted_list = list_to_sort.copy()
n = len(sorted_list)
# Iterate through the list n-1 timesfor i inrange(n-1):
# Flag to track if any swaps were made in a pass
swapped = False# Iterate through the unsorted portion of the listfor j inrange(n-i-1):
# Compare adjacent elements and swap if necessaryif sorted_list[j] > sorted_list[j+1]:
sorted_list[j], sorted_list[j+1] = sorted_list[j+1], sorted_list[j]
swapped = True# If no swaps were made, the list is already sortedifnot swapped:
break# Return the sorted listreturn sorted_list
# Example usage
my_list = [1, 9, 5, 2, 1, 8, 6, 6, 3, 4, 10, 7]
sorted_list = sort_list(my_list)
print(sorted_list) # Output: [1, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10]
: