Файл: Решение def insertion sort() #Сортировка вставкой.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 08.11.2023

Просмотров: 19

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Решение:

def insertion_sort(): #Сортировка вставкой
nums = array[:]

if parity:
for i in range(1, len(nums)):
item_to_insert = nums[i]
j = i-1

#Добавляем цикл для сортировки каждого элемента. Сортировка будет начинаться со второго элемента
while j >= 0 and nums[j] > item_to_insert:
nums[j + 1] = nums[j]
j -= 1
nums[j + 1] = item_to_insert
else:
for i in range(1, len(nums)):
item_to_insert = nums[i]
j = i-1
while j >= 0 and nums[j] < item_to_insert:
nums[j + 1] = nums[j]
j -= 1
nums[j + 1] = item_to_insert
return nums

def selection_sort(): #Сортировка выборкой
nums = array[:]

if parity:
for i in range(len(nums)):
lowest_value_index = i
for j in range(i + 1, len(nums)):
if nums[j] < nums[lowest_value_index]:
lowest_value_index = j
nums[i], nums[lowest_value_index] = nums[lowest_value_index], nums[i]
else:
for i in range(len(nums)):
lowest_value_index = i
for j in range(i + 1, len(nums)):
if nums[j] < nums[lowest_value_index]:
lowest_value_index = j
nums[i], nums[lowest_value_index] = nums[lowest_value_index], nums[i]
return nums

def root_mean_square_counting(): #Среднее квадратичное значение
sum_of_squares = sum([i * i for i in array])
average_sum = sum_of_squares / len(array)
return round(average_sum ** 0.5, 3)

def arithmetic_mean_counting(): #Среднее арифметическое значение
total_sum = sum(array)
return round(total_sum / len(array), 3)
with open("sourse_data.txt", encoding='utf-8') as f:
name = f.readline()[:-1]
student_id = f.readline()

#Приводим аргументы для вывода

array = [ord(i) for i in name.replace(' ', '')]
number = int(int(student_id) / len(array))
parity = number % 2 == 0
sort_array = insertion_sort()
arithmetic_mean = arithmetic_mean_counting()
root_mean_square = root_mean_square_counting()
increasing = 'возрастанию' if parity else 'убыванию'

#Открываем итоговый файл и записываем результат

with open("result.txt", "w", encoding='utf-8') as f:
answer = f"""1. Исходные данные: {name}; ID: {student_id}
2. {number}
3. Направление сортировки: по {increasing}, так как число {number} – {'чётное' if parity else 'нечётное'}
4. Набор данных: {array}
5. Отсортированный по {increasing} набор данных {sort_array}
7. Среднее арифметическое значение: {arithmetic_mean}
8. Среднее квадратическое значение: {root_mean_square}
"""
f.write(answer)

Ответ

1. Исходные данные: Белкина Анна Сергеевна; ID: 70191980

2. 3509599

3. Направление сортировки: по убыванию, так как число 3509599 – нечётное

4. Набор данных: [1041, 1077, 1083, 1082, 1080, 1085, 1072, 1040, 1085, 1085, 1072, 1057, 1077, 1088, 1075, 1077, 1077, 1074, 1085, 1072]

5. Отсортированный по убыванию набор данных [1088, 1085, 1085, 1085, 1085, 1083, 1082, 1080, 1077, 1077, 1077, 1077, 1075, 1074, 1072, 1072, 1072, 1057, 1041, 1040]

7. Среднее арифметическое значение: 1074.2

8. Среднее квадратическое значение: 1074.28