Пример #1
0
def test_run_benchmarks():

    generators_list = [random_generator, almost_sorted_generator, reverse_sorted_generator, few_uniq_generator]
    # generators_list = [random_generator, reverse_sorted_generator]
    # generators_list = [few_uniq_generator]
    # sort_func_list = [bubble_sort, insertion_sort, insertion_sort2]
    sort_func_list = [bubble_sort, insertion_sort, insertion_sort2, selection_sort, shell_sort, \
                      merge_sort, quick_sort, lambda x: quick_sort(x, splitByMedian), heap_sort, 
                      lambda x: radix_sort(x, 1000), intro_sort, timsort]
    # sort_func_list = [quick_sort, \
    #                   lambda x: quick_sort(x, partition_func=splitByMiddleElement), \
    #                   lambda x: quick_sort(x, partition_func=splitByMedian), \
    #                   lambda x: quick_sort(x, leaf_sort_func=leaf_insertion_sort)]
    # sort_func_list = [radix_sort, \
    #                   lambda x: radix_sort(x,     2), \
    #                   lambda x: radix_sort(x,   100), 
    #                   lambda x: radix_sort(x,  1000), 
    #                   lambda x: radix_sort(x, 10000)
    #                   ]

    for generator in generators_list:
        print generator
        for sort_func in sort_func_list:
            run_until(sort_func, 0.5, generator)

    for generator in generators_list:
        print generator
        for list_size in sorted(result[generator]):
            sys.stdout.write(str(list_size) + "\t")
            for sort_func in sort_func_list:
                if sort_func in result[generator][list_size]:
                    sys.stdout.write("{:.3f}\t".format(result[generator][list_size][sort_func]))
                else:
                    sys.stdout.write("\t")
            sys.stdout.write("\n")
Пример #2
0
    all_lists = {}
    all_lists['ALREADY_SORTED'] = [1, 2, 4, 4, 6, 6, 8, 9]
    all_lists['REVERSE_SORTED'] = [9, 8, 6, 6, 4, 4, 2, 1]
    all_lists['FEW_UNIQUE'] = [3, 6, 6, 4, 3, 3, 3, 6, 6, 4]
    all_lists['RANDOM_ORDER'] = [2, 6, 4, 8, 1, 4, 6, 9]
    all_lists['BIG_RANGE'] = [170, 45, 75, 90, 802, 2, 24, 66]
    all_lists['LONG_LIST'] = [
        2, 4, 3, 3, 6, 7, 876, 2, 4, 8, 214, 7, 2, 7, 4, 8, 2, 7, 4, 6, 83, 2,
        6, 7, 88, 75, 2, 3, 6, 789, 86, 3, 6, 6, 3, 575, 6, 87, 8, 574
    ]
    all_lists['ZEROES_IN_LIST'] = [
        9, 0, 3, 0, 54, 6, 1, 45, 1, 57, 1, 56, 8, 8, 3, 0
    ]
    all_lists['ALL_SAME_NUMBER'] = [7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7]

    for list_name, number_list in all_lists.iteritems():
        print "\nUSING LIST \n\t%s\n\t%s" % (list_name, number_list)

        print "Insertion sorted output: \n\t", insertion_sort(number_list)
        print "Bubble sorted output: \n\t", bubble_sort(number_list)
        print "Selection sorted output: \n\t", selection_sort(number_list)
        print "Bucket sorted output (using insertion sort and %s buckets): \n\t" % (
            buckets), bucket_sort(number_list, 3)
        print "Counting sorted output: \n\t", counting_sort(number_list)
        print "Quick sorted output: \n\t", quicksort(number_list)
        print "Merge sorted output: \n\t", mergesort(number_list)
        print "Radix sorted output (using counting sort): \n\t", radix_sort(
            number_list)
        print "Heap sorted output: \n\t", heapsort(number_list)
Пример #3
0
from heap_sort import *


if __name__ == "__main__":

  buckets = 3

  all_lists = {}
  all_lists['ALREADY_SORTED'] = [1, 2, 4, 4, 6, 6, 8, 9]
  all_lists['REVERSE_SORTED'] = [9, 8, 6, 6, 4, 4, 2, 1]
  all_lists['FEW_UNIQUE'] = [3, 6, 6, 4, 3, 3, 3, 6, 6, 4]
  all_lists['RANDOM_ORDER'] = [2, 6, 4, 8, 1, 4, 6, 9]
  all_lists['BIG_RANGE'] = [170, 45, 75, 90, 802, 2, 24, 66]
  all_lists['LONG_LIST'] = [2,4,3,3,6,7,876,2,4,8,214,7,2,7,4,8,2,7,4,6,83,2,6,7,88,75,2,3,6,789,86,3,6,6,3,575,6,87,8,574]
  all_lists['ZEROES_IN_LIST'] = [9,0,3,0,54,6,1,45,1,57,1,56,8,8,3,0]
  all_lists['ALL_SAME_NUMBER'] = [7,7,7,7,7,7,7,7,7,7,7]


  for list_name, number_list in all_lists.iteritems():
    print "\nUSING LIST \n\t%s\n\t%s" %(list_name, number_list)
    
    print "Insertion sorted output: \n\t", insertion_sort(number_list)
    print "Bubble sorted output: \n\t", bubble_sort(number_list)
    print "Selection sorted output: \n\t", selection_sort(number_list)
    print "Bucket sorted output (using insertion sort and %s buckets): \n\t" %(buckets), bucket_sort(number_list, 3)
    print "Counting sorted output: \n\t", counting_sort(number_list)
    print "Quick sorted output: \n\t", quicksort(number_list)
    print "Merge sorted output: \n\t", mergesort(number_list)
    print "Radix sorted output (using counting sort): \n\t", radix_sort(number_list)
    print "Heap sorted output: \n\t", heapsort(number_list)
    
Пример #4
0
 def test_all_same_input(self):
     single_val = rand_list(count=1, min_val=0)[0]
     data = [single_val]*100
     radix_sort(data)
     for i in range(0, 100):
         self.assertEqual(single_val, data[i])
Пример #5
0
 def test_all_zero_input(self):
     data = [0]*100
     radix_sort(data)
     for i in range(0, 100):
         self.assertEqual(data[i], 0)
Пример #6
0
 def test_array_input(self):
     data = rand_list(min_val=0)
     radix_sort(data)
     for i in range(1, len(data)):
         self.assertLessEqual(data[i-1], data[i])
Пример #7
0
 def test_double_input(self):
     data = rand_list(min_val=0, count=2)
     radix_sort(data)
     self.assertLessEqual(data[0], data[1])
Пример #8
0
 def test_single_input(self):
     data = rand_list(min_val=0, count=1)
     data_cp = data[:]
     radix_sort(data)
     self.assertEqual(data, data_cp)
Пример #9
0
 def test_zero_input(self):
     data = []
     radix_sort(data)
     self.assertEqual(data, [])