Рубрики
Без рубрики

# Day19 – сравнение производительности сортировки против сортировки и обратного по VS перевернутый

Мы постараемся выяснить, что быстрее между сортировкой (), отсортирована () и обратным (), обратной () …. Теги с Python, 100Дасофкодом, CodeNewie, программированием.

Ежедневное программирование (37 части серии)

Мы постараемся выяснить, что быстрее между сортировкой (), отсортированными () и обратным (), обращенным ().

Сортировать и сортировать

Как сортировка и сортировка используются для сортировки элементов в списке. Есть две различия

  • Сортировка () – это встроенная функция Python, пока сортировка () – это метод класса список
  • Отсортировано () Возвращает список с его элементом, отсортированным, пока сортировка () – это метод на месте. Обновляет оригинальный список.
import random

lst1 = [random.randint(0,10) for _ in range(5)]

print(lst1)
print(lst1.sort())
print(lst1)

'''
OUTPUT

[2, 9, 10, 7, 0]
None
[0, 2, 7, 9, 10]

'''

Как вы можете видеть, второе оператор печати печатает нет, так как сортируется () – это метод установки. В третьем операторе печати, когда мы будем печатать lst1 Мы видим, что элементы отсортированы.

import random

lst1 = [random.randint(0,10) for _ in range(5)]

print(lst1)
print(sorted(lst1))
print(lst1)

'''
OUTPUT

[3, 6, 7, 5, 5]
[3, 5, 5, 6, 7]
[3, 6, 7, 5, 5]

'''

В отличие от сортировки (), второе оператор печати печатает список с отсортированными элементами, в то время как третий оператор печати печатает список в своем первоначальном порядке.

Сравнение времени, предпринимаемое по родам и отсортировано

У нас есть список 1000 элементов, и мы постараемся отсортировать его, используя оба метода.

import time
import random

lst1=[random.randint(1,1000) for i in range(1000)]

lst2 = lst1.copy()

s1 = time.perf_counter()
sorted(lst1)
print(f'It took {time.perf_counter() - s1} seconds for sorted()')

s1 = time.perf_counter()
lst2.sort()
print(f'It took {time.perf_counter() - s1} seconds for sort()')

Ниже приведен выход

It took 0.00015853159129619598 seconds for sorted()
It took 0.0010612830519676208 seconds for sort()

Кажется отсортированным () быстрее, но давайте попробуем снова запустить его

It took 0.00016496609896421432  seconds for sorted()
It took 0.00013628974556922913 seconds for sort()

HMM, кажется, как быстрее, крошечный край на этот раз

Тест кажется неубедительным, давайте попробуем что-то еще, мы будем работать выше сравнение 25 раз и во время каждой итерации, мы проверим, какой метод был быстрее.

import time
import random

sort_count = 0
sorted_count = 0
for i in range(25):
    print(f'Iteration {i}')
    lst1=[random.randint(1,1000) for i in range(1000)]
    lst2 = lst1.copy()

    s1 = time.perf_counter()
    sorted(lst1)
    sorted_time = time.perf_counter() - s1

    s1 = time.perf_counter()
    lst2.sort()
    sort_time = time.perf_counter() - s1

    if sorted_time < sort_time:
        sorted_count += 1
    else:
        sort_count += 1
print(f'sort_count is {sort_count}')
print(f'sorted_count is {sorted_count}')

Ниже приведен выход

sort_count is 22
sorted_count is 3

На основании вышеуказанного эксперимента, кажется, сортируется быстрее, чем при попытке отсортировать тот же список.

Обратный и обратный

обратный () и обратный () аналогичны сортировку () и отсортированы () соответственно. Reverse () – это встроенная функция Python, в то время как обратный () – это установленное метод класса списка. Единственная разница между сортировкой () и обратной стороной () является то, что сортируется () возвращает объект списка во время обратного () возвращает объект list_Reverseiterator, который может быть типеказой в список, используя список ()

Я не буду показывать примеру, так как это похоже на примеры, обсуждаемые в вышеуказанном разделе. Мы перейдем к более интересному материалу, которое является сравнением производительности.

import time
import random

reverse_count = 0
reversed_count = 0
for i in range(25):
    print(f'Iteration {i}')
    lst1=[random.randint(1,1000) for i in range(1000)]
    lst2 = lst1.copy()

    s1 = time.perf_counter()
    reversed(lst1)
    reversed_time = time.perf_counter() - s1

    s1 = time.perf_counter()
    lst2.reverse()
    reverse_time = time.perf_counter() - s1

    if reversed_time < reverse_time:
        reversed_count += 1
    else:
        reverse_count += 1
print(f'reversed_count is {reversed_count}')
print(f'reverse_count is {reverse_count}')

Ниже приведен выход

reversed_count is 0
reverse_count is 25

Похоже, обратный () – ясный победитель

Резюме

  • Сортировка () и обратное () устанавливаются методы объекта списка и обновляют оригинальный список
  • Сортировка () Возвращает список с сортировкой его элемента
  • обратный () возвращает объект list_Reverseitortorator
  • На основании наших вышеуказанных экспериментов сортируется () быстрее, чем отсортировано (), и Reverse () быстрее, чем обратный ()

Ежедневное программирование (37 части серии)

Оригинал: “https://dev.to/rahulbanerjee99/day19-comparing-the-performance-of-sorting-vs-sorted-and-reverse-vs-reversed-35i6”