Bütün yazdığımız çeşidləmələri dörd növ verilənlə müqayisə edib vəziyyətə görə seçim qaydalarını çıxaracağıq. Saniyə əvəzinə müqayisə sayını ölçürük: o, kompüterdən asılı deyil və hər dəfə eynidir. Çeşidləmələrin özləri əvvəlki dərslərdədir: bubble, insertion, merge, quick, heap, Timsort.

Altı çeşidləmənin müqayisə sayları dörd növ verilən üçün
Altı çeşidləmənin müqayisə sayları dörd növ verilən üçün

Niyə saymaq, ölçməmək

timeit ilə ölçülən saniyələr maşından, Python versiyasından və yükdən asılıdır, nəticələr isə hər dəfə dəyişir. Müqayisələrin sayı isə alqoritmin xassəsidir. Hər elementi __lt__ metodunda sayan Key sinfinə bükürük: < işlədən bütün çeşidləmələr eyni sayğacla ölçülür. Real vaxtı yenə də timeit ilə ayrıca yoxlayın.

python
import random, heapq

class Key:
    count = 0
    def __init__(self, v): self.v = v
    def __lt__(self, other):
        Key.count += 1
        return self.v < other.v