insertion_sorter = InsertionSort()
merge_sorter     = MergeSort()


for attempt in range( 0, M_ATTEMPTS ):

	# initialize
	diff_abs_times = []
	merge_times = []
	insertion_times = []

	# size goes from MIN_ARRAY_SIZE to MAX_ARRAY_SIZE
	for size in size_range:

		# generate size random integers between -100 and 100
		input_array = generate_random_integers( size )

		# insert input inside sorter objects
		insertion_sorter.get_input( input_array )
		merge_sorter.get_input( input_array )

		# sort with insertion_sorter and benchmark
		start_time_insertion = tic()
		insertion_sorter.asc_sort()
		end_time_insertion   = toc()

		# sort with merge_sorter and benchmark
		start_time_merge = tic()
		merge_sorter.asc_sort()
		end_time_merge   = toc()
		
K_VALUES   = list( range( 0, 85 + 1 ) )
ARRAY_SIZE = 5000


# create two sorter objects
hybrid_sorter    = HybridSort()
merge_sorter     = MergeSort()

for attempt in range(0, M_ATTEMPTS):
	
	# initialize
	hybrid_times = []
	merge_times = []

	# generate size random integers between -100 and 100
	input_array = generate_random_integers( ARRAY_SIZE )

	merge_sorter.get_input( input_array )

	# sort with merge_sorter and benchmark
	start_time_merge = tic()
	merge_sorter.asc_sort()
	end_time_merge   = toc()

	for K in K_VALUES:

		# insert input inside sorter objects
		hybrid_sorter.set_K( K )
		hybrid_sorter.get_input( input_array )
		
		# sort with hybrid_sorter and benchmark