Skip to content

Instantly share code, notes, and snippets.

@MarrekNozka
Forked from mrazekthom/sorts.py
Last active August 29, 2015 14:20
Show Gist options
  • Select an option

  • Save MarrekNozka/6518bbaa9ba486f6cb13 to your computer and use it in GitHub Desktop.

Select an option

Save MarrekNozka/6518bbaa9ba486f6cb13 to your computer and use it in GitHub Desktop.
import time
import random
def select_sort(array):
for i in range(0, len(array)):
min = i
for j in range(i+1, len(array)):
if array[min] > array[j]:
min = j
if i != min:
array[i], array[min] = array[min], array[i]
return array
def bouble_sort(array):
lenght = len(array)
for _ in range(lenght):
for i in range(1, lenght):
if array[i] < array[i - 1]:
array[i - 1], array[i] = array[i], array[i - 1]
return array
def insertion_sort(array):
for i in range(1, len(array)):
item = array[i]
hole = i
while hole > 0 and array[hole - 1] > item:
array[hole] = array[hole - 1]
hole -= 1
array[hole] = item
return array
def quick_sort_small(array):
if len(array) <= 1:
return array
else:
pivot = array[0]
left, right = [], []
for i in array[1:]:
if i < pivot:
left.append(i)
else:
right.append(i)
return quick_sort_small(left) + [pivot] + quick_sort_small(right)
def compare_sort(array):
ss_start = time.time()
select_sort(array)
ss_end = time.time()
print('select sort: ', ss_end - ss_start)
bs_start = time.time()
bouble_sort(array)
bs_end = time.time()
print('bouble sort: ', bs_end - bs_start)
is_start = time.time()
insertion_sort(array)
is_end = time.time()
print('insertion sort: ',is_end - is_start)
cs_start = time.time()
array.sort()
cs_end = time.time()
print('classic py sort:',is_end - is_start)
if len(array) < 1000:
qs_start = time.time()
quick_sort_small(array)
qs_end = time.time()
print('guick sort: ',qs_end - qs_start)
array = [random.random() for _ in range(1000)]
print(len(array))
start = time.time()
compare_sort(array)
end = time.time()
print(end - start)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment