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

Помогите решить задачу на питон, решение без всяких слов пожалуйста

Саша Жарков Ученик (73), открыт 4 дня назад
Напишите программу, которая сортирует первую половину массива по возрастанию, а вторую – по убыванию. При этом элементы из первой половины не должны перемещаться во вторую и наоборот.
5 ответов
Максим Мудом Мастер (1196) 4 дня назад
def custom_sort(arr):
mid = len(arr) // 2
first_half = sorted(arr[:mid])
second_half = sorted(arr[mid:], reverse=True)
sorted_arr = first_half + second_half
return sorted_arr

# Пример использования
arr = [3, 7, 1, 5, 9, 2, 6, 4, 8]
sorted_arr = custom_sort(arr)
print(sorted_arr)
Иван Хоулатов Ученик (134) 4 дня назад
def sort_half_array(arr):
"""Sorts the first half of an array in ascending order and the second half in descending order.

Args:
arr: The input array of numbers.

Returns:
A new array with the first and second halves sorted as specified. Returns the original array if it has fewer than 2 elements.

Raises:
TypeError: if input is not a list.
ValueError: if input list contains non-numeric values.

"""
if not isinstance(arr, list):
raise TypeError("Input must be a list.")
if not all(isinstance(x, (int, float)) for x in arr):
raise ValueError("List must contain only numbers.")

n = len(arr)
if n < 2:
return arr # Nothing to sort

midpoint = n // 2 # Integer division to handle odd lengths

# Sort the first half in ascending order
first_half = sorted(arr[:midpoint])

#Sort the second half in descending order
second_half = sorted(arr[midpoint:], reverse=True)

#Reconstruct the array
return first_half + second_half


# Example usage
my_array = [5, 2, 9, 1, 5, 6, 3, 8, 4, 7]
sorted_array = sort_half_array(my_array)
print(f"Original array: {my_array}")
print(f"Sorted array: {sorted_array}")


my_array = [1,5]
sorted_array = sort_half_array(my_array)
print(f"Original array: {my_array}")
print(f"Sorted array: {sorted_array}")

my_array = [1]
sorted_array = sort_half_array(my_array)
print(f"Original array: {my_array}")
print(f"Sorted array: {sorted_array}")

my_array = [1,2,"a"]
sorted_array = sort_half_array(my_array) #this will raise a ValueError
print(f"Original array
: {my_array}")
print(f"Sorted array: {sorted_array}")

Сделано нейросетью
Ксения Райт Гений (97794) 4 дня назад
Проще всего так (со вводом элементов массива в виде целых чисел в одну строку через пробелы):
 A = [int(i) for i in input().split()] 
m = len(A) // 2
A = sorted(A[:m])+sorted(A[m:],reverse=True)
print(*A)
Есть, кстати, такое ограничение: массив должен состоять из чётного числа элементов, а в общем случае задача нерешаема!
Кстати, если вот эта чушь , в которой массив вообще не сортируется как прописано в задании, а создаётся новый массив с совсем другим именем, Вам не понравилась, то отчего же она у Вас не в бане? Просто нажмите дизлайк, да и всё! И всех других нейроботов тоже сразу отправляйте прямиком в бан - нечего им тут светиться своей глупостью!
Лев Перфилов Просветленный (26479) 4 дня назад
 input() 
numbers = list(map(int, input().split()))
for i in range(len(numbers)//2-1):
for j in range(len(numbers)//2-1-i):
if numbers[j] > numbers[j+1]:
numbers[j], numbers[j+1] = numbers[j+1], numbers[j]
for i in range(len(numbers)//2, len(numbers)-1):
for j in range(len(numbers)//2, len(numbers)-(i-len(numbers)//2)-1):
if numbers[j] < numbers[j+1]:
numbers[j], numbers[j+1] = numbers[j+1], numbers[j]

print(*numbers)
Неэффективно, зато по учебнику.
Похожие вопросы