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

Пирамидальная сортировка по нескольким полям

10.09.2022, 12:12. Показов 1240. Ответов 3

Студворк — интернет-сервис помощи студентам
Мне нужно реализовать пирамидальную сортировку, которая будет сортировать список по нескольким полям. Я не понимаю, как в уже имеющийся код добавить условия для сортировки по полям(передать в функцию heap_sort)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class Student:
    def __init__(self, name, group, speciality, exam_date, mark):
        self.name = name
        self.group = group
        self.speciality = speciality
        self.exam_date = exam_date
        self.mark = mark
 
 
def heapify(arr, size, i):
    largest = i
    left = 2 * i + 1
    right = 2 * i + 2
 
    if left < size and arr[largest] < arr[left]:
        largest = left
    if right < size and arr[largest] < arr[right]:
        largest = right
 
    if largest != i:
        arr[i], arr[largest] = arr[largest], arr[i]
        heapify(arr, size, largest)
 
 
def heap_sort(arr):
    size = len(arr)
 
    for i in range((size // 2) - 1, -1, -1):
        heapify(arr, size, i)
 
    for i in range(size - 1, 0, -1):
        arr[i], arr[0] = arr[0], arr[i]
        heapify(arr, i, 0)
 
 
if __name__ == '__main__':
    students = [
        Student('Antony', 111, 121, '12.12.2022', 75),
        Student('Antony', 121, 153, '10.12.2022', 95),
        Student('Becca', 121, 153, '10.12.2022', 55)
    ]
    # make it work like here
    students.sort(key=lambda x: (x.name, -x.mark))
 
    for stud in students:
        print(f"{stud.name} - {stud.group} {stud.mark}")
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.09.2022, 12:12
Ответы с готовыми решениями:

Сортировка по нескольким полям
В бaзe данныx хранитcя N зaписей видa (Name, a1, a2, . . . , ak) – во всeх зaписях oдинаковое чиcло пaраметров. Нa вхoд зaдачи пoдаётся...

Сортировка по нескольким полям
Здравствуйте, уважаемые программисты. Ребята, возникла такая сложность, вроде бы и несложный вопрос, но не могу придумать, как его...

Сортировка по нескольким полям
Есть таблица с полями id, shopID, description, active, vip Нужно вывести отсортированные 9 записей по id, но чтобы записи с vip=1 были...

3
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
12.09.2022, 09:25
Сделай функцию сортировки, равную 1 если один аргумент больше другого для указанного порядка и 0, если нет. Потом примени ее в своей сортировке.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
12.09.2022, 16:22
Цитата Сообщение от Red white socks Посмотреть сообщение
Сделай функцию сортировки, равную 1 если один аргумент больше другого для указанного порядка и 0, если нет.
- лучше бы сказать: "сделай функцию сравнения..."
1
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
12.09.2022, 18:28
Catstail, я был уверен, что это и написал, но видимо в тот момент еще не проснулся
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.09.2022, 18:28
Помогаю со студенческими работами здесь

Сортировка по нескольким полям
Имеется массив учеников. Написать программу, которая вводит ФИО,пол,возраст,класс каждого из этих учеников и печатает...

Сортировка по нескольким полям
Добрый день.Есть следующая многострадальная задача: Построить три класса (базовый и 2 потомка), описывающих некоторых работников с...

Сортировка по нескольким полям в DbGrid
Необходимо сделать сортировку по суммарному количеству практикантов. Смог сделать только сортировку по отдельным курсам. На картинке...

Сортировка документов по нескольким полям одновременно
Всем доброго дня. задача следующая. Есть в базе некоторое количество документов (500-1000) В документах набор поле (10 штук) ...

Сортировка выбором по нескольким полям структуры
Привет! Не получается сортировать по дате рождения, сортирует только по годам, от старшего к молодому, а месяца и дни не сортирует,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru