Вечером ребята решили поиграть в игру «Большое число».
Даны числа. Нужно определить, какое самое большое число можно из них составить.
Формат ввода
В первой строке записано n — количество чисел. Оно не превосходит 100.
Во второй строке через пробел записаны n неотрицательных чисел, каждое из которых не превосходит 1000.
Формат вывода
Нужно вывести самое большое число, которое можно составить из данных чисел.
def bubble_sort(number, source_array): for i in range(number - 1): for j in range(0, number-i-1): var1 = source_array[j] + source_array[j+1] var2 = source_array[j + 1] + source_array[j] if var1 < var2: source_array[j], source_array[j+1] = source_array[j+1], source_array[j] print("".join(source_array)) if __name__ == '__main__': number = int(input()) source_array = input().split(' ') bubble_sort(number, source_array)
Чуть быстрее используя компаратор.
def comparator(number_1, number_2):
if len(number_1) == len(number_2):
return number_1 > number_2
else:
var1 = number_1 + number_2
var2 = number_2 + number_1
return var1 > var2
def max_number_summator(numbers_arr, comparator):
for i in range(1, len(numbers_arr)):
item_to_insert = numbers_arr[i]
j = i
while j > 0 and comparator(item_to_insert, numbers_arr[j-1]):
numbers_arr[j] = numbers_arr[j-1]
j-= 1
numbers_arr[j] = item_to_insert
return numbers_arr
num = input()
numbers_arr = [x for x in input().split(‘ ‘)]
print(».join(max_number_summator(numbers_arr, comparator)))
так почище будет
from typing import List
def comporator(num_1: str, num_2: str) -> bool:
if len(num_1) == len(num_2):
return num_1 > num_2
var_1 = num_1 + num_2
var_2 = num_2 + num_1
return var_1 > var_2
def max_num(numbers: List) -> str:
for i in range(1, len(numbers)):
item_for_sort = numbers[i]
while i > 0 and comporator(item_for_sort, numbers[i — 1]):
numbers[i] = numbers[i — 1]
i -= 1
numbers[i] = item_for_sort
return «».join(numbers)
if __name__ == «__main__»:
n = int(input())
task_numbers = input().split()
print(max_num(task_numbers))