#!/usr/bin/python

import sys
import time
import random
import binarysort
import bubblesort
import insertionsort

def shuffle(lst):
	len_lst = len(lst)
	for index in xrange(len_lst):
		random_index = int(random.random() * len_lst)
		lst[index], lst[random_index] = lst[random_index], lst[index]

def gibberish(n):
	return [ ('spam ' * 10, 'eggs ' * 10, 'spam ' * 10, i) for i in xrange(n) ]

bad = False

for i in xrange(1, 100):
#for i in [ 10 ]:
	print i,
	sys.stdout.flush()
	original_list = gibberish(i)
	#print original_list
	list_ = original_list[:]
	shuffle(list_)

	t0 = time.time()
	list_from_insertionsort = list_[:]
	insertionsort.insertionsort(list_from_insertionsort, 0, len(list_) - 1)
	t1 = time.time()
	insertion_diff = t1 - t0
	print insertion_diff,
	sys.stdout.flush()

	t0 = time.time()
	list_from_binarysort = list_[:]
	binarysort.binarysort(list_from_binarysort, 0, len(list_) - 1)
	t1 = time.time()
	binary_diff = t1 - t0
	print binary_diff,
	sys.stdout.flush()

	t0 = time.time()
	list_from_bubblesort = list_[:]
	bubblesort.bubblesort(list_from_bubblesort, 0, len(list_) - 1)
	t1 = time.time()
	bubble_diff = t1 - t0
	print bubble_diff
	sys.stdout.flush()

	#print original_list
	#print list_from_insertionsort

	if list_from_insertionsort != original_list:
		print 'insertion sort problem', i
		bad = True

	if list_from_binarysort != original_list:
		print 'binary sort problem', i
		bad = True

	if list_from_bubblesort != original_list:
		print 'bubble sort problem', i
		bad = True

if bad:
	print 'sort problems'
	sys.exit(1)