0 / 0 / 0
Регистрация: 24.07.2023
Сообщений: 3

Эффективная реализация функции __gt__ для быстрой сортировки

24.07.2023, 17:52. Показов 500. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть вот такой исходный код.

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
47
48
49
50
51
52
53
54
55
56
57
58
59
import random
from dataclasses import dataclass
 
 
@dataclass(frozen=True)
class User:
    __slots__ = ['username', 'solved', 'errors']
    username: str
    solved: int
    errors: int
 
    def __gt__(self, other):
        if self.solved == other.solved:
            if self.errors == other.errors:
                return self.username > other.username
            else:
                return self.errors > other.errors
        return self.solved < other.solved
 
    def __str__(self):
        return self.username
 
 
def quicksort(arr):
    def sort(arr, low, high):
        if low >= high:
            return -1
 
        left, right = low, high
        pivot = arr[random.randint(low, high)]
 
        while left <= right:
            while arr[left] < pivot:
                left += 1
            while arr[right] > pivot:
                right -= 1
 
            if left <= right:
                arr[left], arr[right] = arr[right], arr[left]
                left += 1
                right -= 1
 
        sort(arr, low, right)
        sort(arr, left, high)
 
    sort(arr, low=0, high=len(arr)-1)
 
 
if __name__ == "__main__":
    number = int(input())
    users = []
 
    for _ in range(number):
        username, solved, errors = input().split()
        users.append(User(username, int(solved), int(errors)))
 
    quicksort(users)
 
    print(*users, sep='\n')[/CODE]
Как в нем можно сократить эту часть ?

Python
1
2
3
4
5
6
7
def __gt__(self, other):
        if self.solved == other.solved:
            if self.errors == other.errors:
                return self.username > other.username
            else:
                return self.errors > other.errors
        return self.solved < other.solved
Мне сказали что это можно сделать так 'Можно сократить количество если делать обратные проверки

"
Python
1
2
3
4
5
self.solved != other.solved:
     if self.errors != other.errors:
        ...
    ...
...
" '

Перепробовал уже десятки вариантов и ни один не верный
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.07.2023, 17:52
Ответы с готовыми решениями:

Реализация быстрой сортировки
Здравствуйте, помогите пожалуйста написать следующую модернизацию быстрой сортировки на C#: реализовать быструю сортировку используя не...

Реализация быстрой сортировки
Очень надеюсь на вашу помощь. Не смог разобраться сам

Реализация быстрой сортировки
Добрый вечер, нашел две реализации быстрой сортировки. Может кто объяснить чем они отличаются и какая лучше? первая реализация static...

2
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
24.07.2023, 18:16
Лучший ответ Сообщение было отмечено Jerimi как решение

Решение

Jerimi,
Python
1
2
3
4
5
6
    def __gt__(self, other):
        if self.solved != other.solved:
            return self.solved < other.solved
        if self.errors != other.errors:
            return self.errors > other.errors
        return self.username > other.username
1
0 / 0 / 0
Регистрация: 24.07.2023
Сообщений: 3
24.07.2023, 18:24  [ТС]
Спасибо большое !
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.07.2023, 18:24
Помогаю со студенческими работами здесь

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

Реализация быстрой сортировки
Решил реализовать алгоритм быстрой сортировки. Иногда, программа работает корректно. Иногда, падает с ошибкой сегментации. typedef...

Реализация быстрой сортировки
Есть массив структур STUDENT, в который мы, кроме всего остального, вводим 5 оценок. Нужно отсортировать массив структур по среднему балу...

Реализация быстрой сортировки
Добрый вечер. Есть код, который на мой взгляд должен работать верно: def qsort(list, left, right): l, r = left, right mid =...

Реализация быстрой сортировки столбцов
Помогите реализовать быструю сортировку столбцов не используя функцию qsort. Я вот написал, но ума неприложу, почему не работает. Оно на...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru