Добрый день! Давайте разберемся, как реализовать сортировку методом подсчета и привязать ее к файлам. Вот пример кода на Python:
def counting_sort(arr, reverse=False):
if not arr:
return []
# Найдем минимум и максимум
min_val = min(arr)
max_val = max(arr)
# Создадим массив для подсчета
count = [0] * (max_val - min_val + 1)
# Подсчитаем количество каждого элемента
for num in arr:
count[num - min_val] += 1
# Восстановим отсортированный массив
sorted_arr = []
if reverse:
# Для убывающей сортировки
for num in range(max_val, min_val - 1, -1):
sorted_arr.extend([num] * count[num - min_val])
else:
# Для возрастающей сортировки
for num in range(min_val, max_val + 1):
sorted_arr.extend([num] * count[num - min_val])
return sorted_arr
# Чтение данных из файла
with open('input.txt', 'r') as file:
data = list(map(int, file.read().split()))
# Сортировка
sorted_data_asc = counting_sort(data)
sorted_data_desc = counting_sort(data, reverse=True)
# Запись результата в файл
with open('output.txt', 'w') as file:
file.write('Ascending:\n')
file.write(' '.join(map(str, sorted_data_asc)) + '\n')
file.write('Descending:\n')
file.write(' '.join(map(str, sorted_data_desc)) + '\n')
Объяснение:
- Функция counting_sort: Реализует сортировку подсчетом. Она работает как для возрастающего, так и для убывающего порядка в зависимости от параметра reverse.
- Чтение из файла input.txt: Открывает файл и считывает данные в виде списка целых чисел.
- Сортировка: Сортирует данные дважды — по возрастанию и по убыванию.
- Запись в файл output.txt: Результаты сортировки записываются в файл.
Убедитесь, что файл input.txt находится в той же директории, что и ваш скрипт, и содержит список чисел, разделенных пробелами или новой строкой.