Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Сортировка методом подсчета на python

Антон Попов Знаток (328), на голосовании 3 недели назад
Добрый день, помогите пожалуйста с лабой. Нужно написать код, который из файла input.txt прочитает список, отсортирует и запишет в другой файл output.txt. Как все это друг к другу привязать не пойму я что то.
Голосование за лучший ответ
Эй, Бро! Знаток (472) 1 месяц назад
Добрый день! Давайте разберемся, как реализовать сортировку методом подсчета и привязать ее к файлам. Вот пример кода на 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')

Объяснение:

  1. Функция counting_sort: Реализует сортировку подсчетом. Она работает как для возрастающего, так и для убывающего порядка в зависимости от параметра reverse.
  2. Чтение из файла input.txt: Открывает файл и считывает данные в виде списка целых чисел.
  3. Сортировка: Сортирует данные дважды — по возрастанию и по убыванию.
  4. Запись в файл output.txt: Результаты сортировки записываются в файл.
Убедитесь, что файл input.txt находится в той же директории, что и ваш скрипт, и содержит список чисел, разделенных пробелами или новой строкой.
Похожие вопросы