как не делай, а самый простой вариант самый быстрый

= 0.37903809547424316 sec # вариант с [x for x in enumerate(numbers)]
= 0.404041051864624 sec # вариант с except IndexError:
= 0.20402097702026367 sec # классика
import random
import time
class Time:
def __enter__(self):
self.start = time.time()
return self
def __exit__(self, *args):
self.end = time.time()
print(' = ',self.end - self.start,'sec')
with Time() as t:
numbers = [random.randint(0,10) for x in range(0,1000)]
counter = 1
while counter < len(numbers):
for i in [x[0] for x in enumerate(numbers[:-1])]:
if numbers[i] > numbers[i + 1]:
numbers[i], numbers[i + 1] = numbers[i + 1], numbers[i]
counter += 1
print(numbers)
with Time() as t:
numbers = [random.randint(0, 100) for x in range(1, 1000)]
def xsort(numbers):
counter = 0
for i in numbers:
try:
if numbers[counter] > numbers[counter + 1]:
numbers[counter], numbers[counter + 1] = numbers[counter + 1], numbers[counter]
counter = counter + 1
except IndexError:
counter = 0
try:
for i in numbers:
null = numbers[counter + 1]
counter = counter + 1
if i > null:
xsort(numbers)
except IndexError:
return numbers
xsort(numbers)
print(numbers)
with Time() as t:
numbers = [random.randint(0, 100) for x in range(1000)]
n = 1
while n < len(numbers):
for i in range(len(numbers) - n):
if numbers[i] > numbers[i + 1]:
numbers[i], numbers[i + 1] = numbers[i + 1], numbers[i]
n += 1
print(numbers)