Как указано выше, мне нужно использовать функцию небиблиотечной сортировки, в частности функцию сортировки слиянием, которую я реализовал в предыдущем назначении. Мое задание работает очень хорошо, используя activity_arr.sort(key=operator.itemgetter(2))
. Тем не менее, требования требуют, чтобы я использовал эту функцию:
def merge_sort(array):
''' Sorts an array using merge sort algorithm.'''
if len(array) > 1:
# '//' is for "floor division", used in case array is filled with floats
mid = len(array) // 2
left = array[:mid]
right = array[mid:]
# Recursion to sort left and right half of array
merge_sort(left)
merge_sort(right)
i = 0
j = 0
k = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
array[k] = left[i]
i += 1
else:
array[k] = right[j]
j += 1
k += 1
# Fill the rest of the array with remaining numbers in each array
while i < len(left):
array[k] = left[i]
i += 1
k += 1
while j < len(right):
array[k] = right[j]
j += 1
k += 1
Полагаю, мне придется изменить его, чтобы я мог отсортировать свой список кортежей. Пример моего списка для сортировки: example_list = [(1, 3, 4), (7, 2, 5), (1, 2, 1)]
. Я хочу отсортировать в порядке возрастания по третьему элементу кортежа. ТАК это должно привести к следующему: sorted_list = [(1, 2, 1), (1, 3, 4), (7, 2, 5)]
.
Я все еще изучаю Python, и мне еще многое предстоит выучить в CS. Я понятия не имею, как сделать это изменение, несмотря на множество исследований, в которых я нахожу людей, которые говорят, что используют .sort () Если я пропустил что-то важное, пожалуйста, дайте мне знать! Буду очень признателен за любую помощь или информацию для поиска. Спасибо!