Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 25.10.2021
Сообщений: 8
1

Задача на сортировку массива

26.10.2021, 14:34. Показов 1267. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
list = []
mas = int(input("количество элементов в массиве = "))
for a in input("Исходный массив = ").split():
    list.append(int(a))
 mas1 = len(list)
list.sort()
i = list.index(0)
while i == 0 :
   u = list.pop(0)
   list.append(u)
   i = list.index(0)
print (list)
В задаче сказано что нужно отсортировать массив вот так [1, 0, 2] (к примеру), что бы 1 была меньше 0, при этом нужно задействовать только один массив, решил половину дальше не понимаю как, может кто поможет заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.10.2021, 14:34
Ответы с готовыми решениями:

Задача на сортировку
ЗАДАНИЕ: Имеется текстовый файл, в котором занесены сведения о студентах колледжа. Список не...

Задача на сортировку
Написал код к задаче, и не проходит один тест(неправильный ответ). Подскажите пожалуйста, в чём...

Задача на сортировку
Написать программу, сортирующую по алфавиту строку латинских букв, созданных генератором случайных...

Задача на сортировку массива
list = mas = int(input("количество элементов в массиве = ")) for a in input("Исходный массив =...

10
Модератор
Эксперт функциональных языков программированияЭксперт Python
37303 / 20737 / 4272
Регистрация: 12.02.2012
Сообщений: 34,133
Записей в блоге: 14
26.10.2021, 19:07 2
Не пытайся косноязычно изложить условие задачи. Приведи точные формулировки.
1
0 / 0 / 0
Регистрация: 25.10.2021
Сообщений: 8
26.10.2021, 20:34  [ТС] 3
Цитата Сообщение от syperdog Посмотреть сообщение
Python
1
2
3
4
5
6
7
8
9
10
11
12
list = []
mas = int(input("количество элементов в массиве = "))
for a in input("Исходный массив = ").split():
    list.append(int(a))
 mas1 = len(list)
list.sort()
i = list.index(0)
while i == 0 :
   u = list.pop(0)
   list.append(u)
   i = list.index(0)
print (list)
В задаче сказано что нужно отсортировать массив вот так [1, 0, 2] (к примеру), что бы 1 была меньше 0, при этом нужно задействовать только один массив, решил половину дальше не понимаю как, может кто поможет заранее спасибо.
Вот точное условия задачи
Миниатюры
Задача на сортировку массива  
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37303 / 20737 / 4272
Регистрация: 12.02.2012
Сообщений: 34,133
Записей в блоге: 14
26.10.2021, 20:52 4
Это другое дело. Нормальная формулировка. А написать ее ручками слабо? Проблемы с памятью?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def task(arr):
    c2=c1=c0=0
    for a in arr:
        if a==0:
            c0+=1
        elif a==1:
            c1+=1
        else:
            c2+=1
    for i in range(c1):
        arr[i]=1
    for i in range(c0):
        arr[i+c1]=0
    for i in range(c2):
        arr[i+c1+c0]=2
    
x=[1,1,2,0,0,1,0,2,2,1,1,1,1,0]
print(x)
task(x)
print(x)
Миниатюры
Задача на сортировку массива  
1
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
26.10.2021, 22:02 5
Лучший ответ Сообщение было отмечено syperdog как решение

Решение

Catstail,
Python
1
2
3
4
x=[1,1,2,0,0,1,0,2,2,1,1,1,1,0]
print(x)
x.sort(key=lambda a: (4-a)%3)
print(x)
2
0 / 0 / 0
Регистрация: 25.10.2021
Сообщений: 8
27.10.2021, 00:50  [ТС] 6
Спасибо что помогли, да я мог написать в ручную, просто я не знал что вас затруднит прочитать текст на картинке

Добавлено через 8 минут
[],avgoor,
Спасибо что помогли
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37303 / 20737 / 4272
Регистрация: 12.02.2012
Сообщений: 34,133
Записей в блоге: 14
27.10.2021, 07:29 7
avgoor, для больших списков мой вариант будет быстрее...
0
Status 418
Эксперт Python
4581 / 2348 / 602
Регистрация: 26.11.2017
Сообщений: 5,264
Записей в блоге: 3
28.10.2021, 09:35 8
Catstail, на питоне не факт...
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37303 / 20737 / 4272
Регистрация: 12.02.2012
Сообщений: 34,133
Записей в блоге: 14
28.10.2021, 10:02 9
eaa, да, питоновская сортировка очень эффективна. Но для миллионных размеров массива O(n) должно победить. Кстати, понять по ключу lambda a: (4-a)%3 какой должен быть порядок сортировки, мягко говоря непросто. Особенно, если не сказать, что исходный список состоит только из нулей, единиц и двоек. Тогда как мой код (сортировка подсчетом) в этом смысле - совершенно прозрачен.
0
Status 418
Эксперт Python
4581 / 2348 / 602
Регистрация: 26.11.2017
Сообщений: 5,264
Записей в блоге: 3
28.10.2021, 10:06 10
Catstail, да ключик поэффективнее можно написать и без подсчета можно вроде обойтись. на досуге надо померять.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
37303 / 20737 / 4272
Регистрация: 12.02.2012
Сообщений: 34,133
Записей в блоге: 14
28.10.2021, 10:21 11
Чуть обобщим задачу: Массив может содержать единицы, двойки, тройки и нули. Отсортировать его нужно в порядке 0-3-1-2.
Ну, напишите компаратор в лямбде... (хотя это сделать можно) А вот мой универсальный код (он даже короче исходного):


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# arr - сортируемый список
# seq - последовательность сортировки
 
def csort(arr,seq):
    c=[0 for _ in range(len(seq))]
    for a in arr:
        k=seq.index(a)
        c[k]=c[k]+1
    p=0    
    for i in range(len(seq)):
        a=seq[i]
        for j in range(c[i]):
            arr[p]=a
            p+=1
 
x=[1,1,2,0,0,1,0,2,3,2,1,1,1,1,0,3,3,3]
print(x)
csort(x,[0,3,2,1])
print(x)
0
28.10.2021, 10:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2021, 10:21
Помогаю со студенческими работами здесь

Задача на сортировку
В супермаркете проводится беспрецедентная акция – «Покупая два любых товара, третий получаешь...

Задача на сортировку массива
Задано массив чисел. Отсортировать по возрастанию методом минимальных элементов его положительные...

Задача на сортировку массива
суть задачи отсортировать массив выше главной диагонали, вот что получилось, но не правильно...

Задача на сортировку массива
Дан массив A размера N (≤ 6). Упорядочить его по возрастанию ме-тодом сортировки простыми...

Задача на сортировку массива
Всем доброго времени суток. Есть задача - Отсортировать по возрастанию только четные элементы...

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

Задача на сортировку массива в форме
В массиве содержится не менее 100 записей (поля записи определить самостоятельно), отсортировать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru