Ребята, кто разбирается в Python, помогите решить задачу, вот мой код:
a = list(map(int, input().split()))
t = 0
for i in range((len(a)//2)):
for j in range(i+1, len(a)//2):
if a[i] > a[j]:
a[i], a[j] = a[j], a[i]
for i in range((len(a)//2) + 1, len(a)):
for j in range(len(a) //2 + 1, len(a) - 1):
if a[i] < a[j]:
a[j], a[i] = a[i], a[j]
for i in range(len(a)):
print(a[i], end = " ")
Проблема в том, что он вторую половину массива сортирует тоже по возрастанию, а не по убыванию :(
Нужно обязательно сортировкой, без встроенных функций в пайтон
![](https://st.uroker.com/files/f71/f71f606cf8437ac16ef82c96314ab1a1.png)
![](https://st.uroker.com/files/13f/13f2e80a57b65ffea8fa2423b3f05b51.png)
Ответы
Ответ:
Проблема в коде заключается в том, что второй цикл в сортировке второй половины массива должен начинаться со значения i+1, а не с len(a)//2 + 1, а также индекс len(a)-1 во втором цикле не нужен, так как он приведет к тому, что последний элемент не будет участвовать в сортировке.
Вот исправленный код для сортировки второй половины массива по убыванию:
a = list(map(int, input().split()))
for i in range(len(a)//2, len(a)):
for j in range(i+1, len(a)):
if a[i] < a[j]:
a[i], a[j] = a[j], a[i]
for i in range(len(a)):
print(a[i], end = " ")
В этом коде первый цикл проходит по второй половине массива, а второй цикл проходит по элементам, находящимся правее текущего элемента. Если текущий элемент больше элемента, находящегося правее него, то они меняются местами, тем самым происходит сортировка второй половины массива по убыванию.
Объяснение:
не работает сразу говори мне я исправлю
Ответ:
Проблема вашего кода в том, что вы используете две разные сортировки для разных частей списка a, но обе сортировки одинаковы.
a = list(map(int, input().split()))
t = 0
for i in range((len(a)//2)):
for j in range(i+1, len(a)//2):
if a[i] > a[j]:
a[i], a[j] = a[j], a[i]
for i in range((len(a)//2) + 1, len(a)):
for j in range(i + 1, len(a)):
if a[i] < a[j]:
a[j], a[i] = a[i], a[j]
for i in range(len(a)):
print(a[i], end = " ")