from BinaryTree import *
from RedBlackTree import *
from time import time
from random import sample, randint
from os import path
# Esta eh a funcao que executa os testes. "n" eh o numero de elementos que serao inseridos.
#n = raw_input("digite multiplo de mil")
#t = raw_input("1=binaria / 2=red black")
#if (t == "1"):
# bintree(n)
#elif (t == "2"):
# make.rbtree(n)
make.bintree(1000)
def make(n):
arq1 = open(path.expanduser("~" + "/bin.xls"),"w")
arq2 = open(path.expanduser("~" + "/rbt.xls"), "w")
n = int(n)
myNumbers = sample(range(1, n*1000), n) #Numeros que serao inseridos. A populacao eh 1000 vezes maior que a amostra
def bintree(n):
binaryTreeTest = BinaryTree()
cont = n/1000 #Faz com que a contagem do tempo se repita a cada 1000 elementos inseridos.
print cont
for i in range(cont):
t1 = time()
for j in range(n/cont):
binaryTreeTest.insertValue(myNumbers[(i*(n/cont)) + j])
t2 = time()
arq1.writelines(str(t2-t1) + "\n") #Tempo de insercao em arvore binaria
arq1.close()
print "bintree done!"
def rbtree(self):
redBlackTreeTest = RedBlackTree()
for l in range(cont):
t3 = time()
for m in range(n/cont):
redBlackTreeTest.insertValue(myNumbers[(l*(n/cont)) + m])
t4 = time()
arq2.writelines(str(t4-t3) + "\n") #Tempo de insercao em arvore vermelho-preto
arq2.close()
print "red-black tree done!"
# number = randint(0,(n-1))
#
# print number
#
# print
# print myNumbers[number]
#
# t3 = time()
# print tree.search(myNumbers[number])
# t4 = time()
#
# print
# print tree.search(myNumbers[number])
# print
# print t4-t3