Esempio n. 1
0
def start_algorithm():
    global data
    if not data: return 

    if(alg_menu.get() == 'Quick sort'):
        quick_sort(data, 0,len(data) - 1,draw_data,speed_scale.get())
    elif alg_menu.get() == 'Bubble sort':
        bubble_sort(data,draw_data,speed_scale.get())
    elif alg_menu.get() == 'Merge sort':
        merge_sort(data, draw_data, speed_scale.get())
    elif alg_menu.get() == 'Insertion sort':
        insertion_sort(data, draw_data, speed_scale.get())
    draw_data(data,[['green'] for x in range(len(data))])
Esempio n. 2
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")
def start():
    print('Sorting...')
    global data
    if not data:
        return

    # These if else statements call the function of the selected algorithm
    if algMenu.get() == 'Quick Sort':
        quick_sort(data, draw_data, speedScale.get())
    elif algMenu.get() == 'Bubble Sort':
        bubble_sort(data, draw_data, speedScale.get())
    elif algMenu.get() == 'Insertion Sort':
        insertion_sort(data, draw_data, speedScale.get())
    elif algMenu.get() == 'Selection Sort':
        selection_sort(data, draw_data, speedScale.get())
    elif algMenu.get() == 'Merge Sort':
        merge_sort(data, 0, len(data) - 1, draw_data, speedScale.get())
    elif algMenu.get() == 'Counting Sort':
        count_sort(data, draw_data, speedScale.get())
Esempio n. 4
0
def test_quick_sort(make_random_lists):
    random_lists = make_random_lists

    for a_list in random_lists:
        sorted_list = quick_sort(a_list)
        for j in range(len(a_list)):
            if j == 0:
                continue
            else:
                if sorted_list[j] < sorted_list[j - 1]:
                    raise ValueError, sorted_list
def test_quick_sort(make_random_lists):
    random_lists = make_random_lists

    for a_list in random_lists:
        sorted_list = quick_sort(a_list)
        for j in range(len(a_list)):
            if j == 0:
                continue
            else:
                if sorted_list[j] < sorted_list[j-1]:
                    raise ValueError, sorted_list
Esempio n. 6
0
def bucket_sort(num_list):
    """
    桶排序
    根据数值分桶,桶内快排
    :param num_list:
    :return:
    """
    # 10个桶
    # 具体问题按需取值
    # 注意[[]] * 10 这种写法是浅复制10个空数组
    bucket = [[] for _ in range(bucket_num)]
    gap = math.ceil(max(num_list)/bucket_num)
    
    for v in num_list:
        bucket[v//gap].append(v)

    ret = []
    for l in bucket:
        quick_sort(l, 0, len(l)-1)
        ret.extend(l)
    return ret
Esempio n. 7
0
def bucket_sort(seq):
    biggest = 0
    for number in seq:
        if number > biggest:
            biggest = number
    buckets = []
    buckets.append([]) * (biggest / 10 + 1)
    for number in seq:
        buckets[number / 10].append(number)
    for index, bucket in enumerate(buckets):
        # using quicksort to sort individual buckets
        buckets[index] = quick_sort(bucket)
    final = [number for number in bucket for bucket in buckets]
    return final
def test_quick_sort(): 

  arr = [3,5,6,2,9]
  right = (len(arr) -1) 

  assert quick_sort(arr, 0, right) == [2,3,5,6,9]
def test_two_ordered(): 

  arr = [2,4]

  assert quick_sort(arr, 0, len(arr)-1) == [2,4]        
def test_two(): 

  arr = [4,2]

  assert quick_sort(arr, 0, len(arr)-1) == [2,4] 
Esempio n. 11
0
#!/usr/bin/env python3
# run.py
# demonstrates a quick sort using quick_sort.py

from quick_sort import *

myarray = [3, 8, 7, 1, 2, 4, 5, 6]
print("(UNSORTED) ", myarray)
print("\n ... performing quick sort ... \n")
myarray = quick_sort(myarray, 0, len(myarray) - 1)
print("(SORTED)   ", myarray)
Esempio n. 12
0
import quick_sort

number = [1,2,3,45,67,89]

quick_sort(number)
Esempio n. 13
0
 def quick(self, arr):
     ''' quicksort implementation'''
     return quick_sort(arr)
	def test_sorting_mix(self):
		self.assertEqual([-6, 5, ',', '/', '?', 'K', 'c'],quick_sort(['/',',','c',5,-6,'K','?']))
Esempio n. 15
0
def test_quick_sort_dupes():
    array = [8, 4, 4, 4, 16, 5]
    actual = quick_sort(array, 0, len(array) - 1)
    expected = [4, 4, 4, 5, 8, 16]
    assert actual == expected
Esempio n. 16
0
 def test_quicksort(self):
     quick_sort(self.ex)
     self.assertEqual(self.ex,  [1, 2, 3, 4, 5, 6, 7, 8])
Esempio n. 17
0
from quick_sort import *


def read_input(fn):
    return [int(l) for l in open(fn).readlines()]


results = {10: (25, 29, 21), 100: (615, 587, 518), 1000: (10297, 10184, 8921)}
pivot_funcs = (first_pivot, last_pivot, median_of_three_pivot)

for n in 10, 100, 1000:
    data = read_input("assignment_1_3_test_%d.txt" % n)
    for idx, pivot_func in enumerate(pivot_funcs):
        assert quick_sort(list(data), pivot_func) == results[n][idx]

data = read_input("assignment_1_3_input.txt")
print([quick_sort(list(data), pf) for pf in pivot_funcs])
	def test_sorting_letters(self):
		self.assertEqual(["a"],quick_sort(["a"]))
		self.assertEqual(['C','E','T','b','c','k'],quick_sort(['T','C','c','k','E','b']))
	def test_sorting_numbers(self):
		self.assertEqual([4],quick_sort([4]))
		self.assertEqual([-7,-4,0,2,3,10,15],quick_sort([2,-4,0,10,15,-7,3]))
Esempio n. 20
0
import random
import copy
from insertion_sort import *
from merge_sort import *
from quick_sort import *

if __name__ == "__main__":
  arr = [random.randint(0, 100) for i in range(10)]
  print(arr)
  print(insertion_sort(copy.deepcopy(arr)))
  print(arr)
  print(merge_sort(copy.deepcopy(arr)))
  print(arr)
  print(quick_sort(copy.deepcopy(arr), 0, len(arr)-1))
Esempio n. 21
0
def test_quick_sort_short():
    array = [4, 6, 2]
    actual = quick_sort(array, 0, len(array) - 1)
    expected = [2, 4, 6]
    assert actual == expected
Esempio n. 22
0
def test_quick_sort_happy():
    array = [8, 4, 23, 42, 16, 15]
    actual = quick_sort(array, 0, len(array) - 1)
    expected = [4, 8, 15, 16, 23, 42]
    assert actual == expected
	def test_sorting_symbols(self):
		self.assertEqual(["!"],quick_sort(["!"]))
		self.assertEqual(['*','>','?'],quick_sort(['?','*','>']))
Esempio n. 24
0
def test_quick_sort_long():
    array = [4, 6, 2, 4, 8, 7, 1, 12, 3]
    actual = quick_sort(array, 0, len(array) - 1)
    expected = [1, 2, 3, 4, 4, 6, 7, 8, 12]
    assert actual == expected
print()

print("Merge sorted: ")
merge_sorted_list = list(original)
a = time.time()
merge_sorted_list = merge_sort(merge_sorted_list)
b = time.time()
print(b - a)
print_list(merge_sorted_list)
test_properties(sorted, merge_sorted_list)
print()

print("Quick sorted: ")
quick_sorted_list = list(original)
a = time.time()
quick_sort(quick_sorted_list)
b = time.time()
print(b - a)
print_list(quick_sorted_list)
test_properties(sorted, quick_sorted_list)
print()

print("Max heap sorted: ")
max_heap_sorted_list = list(original)
a = time.time()
max_heap_sorted_list = max_heap_sort(max_heap_sorted_list)
b = time.time()
print(b - a)
max_heap_sorted_list = list(reversed(max_heap_sorted_list))
print_list(max_heap_sorted_list)
test_properties(sorted, max_heap_sorted_list)
Esempio n. 26
0
def test_quick_sort_empty():
    array = []
    actual = quick_sort(array, 0, len(array) - 1)
    expected = 'cannot sort an empty array'
    assert actual == expected
Esempio n. 27
0
def topological_sort(graph):
    color, pi, d, f = depth_first_search(graph)
    f, vertices = quick_sort(f, 0, len(f) - 1, fetch_vertices(graph))
    f.reverse()
    vertices.reverse()
    return f, vertices
Esempio n. 28
0

def generateArray(elements):
    array = []
    for i in range(elements):
        array.append(random.randint(0, 100))
    return array


if __name__ == '__main__':

    ## Quicksort
    print('Quicksort:')
    array = generateArray(20)
    print(array)
    quick_sort(array, 0, len(array) - 1)
    print(array)

    ## Mergesort
    print('Mergesort:')
    array = generateArray(20)
    print(array)
    array = merge_sort(array)
    print(array)

    ## Selectionsort
    print('Selectionsort:')
    array = generateArray(20)
    print(array)
    selection_sort(array)
    print(array)
Esempio n. 29
0
            n = int(input('\n\n Aperte 0 Para Voltar: '))

    elif n == 6:
        print("\n" * 130)
        print('*** Quick Sort ***\n')
        try:
            nome_arq = input('Nome do arquivo a ser Aplicado Quick Sort: ')
            nome_arq = nome_arq + '.txt'
            arquivo = open(nome_arq, 'r')
            lista = arquivo.readlines()
            x5 = 0
            while x5 != 9:
                for index in range(len(lista)):
                    lista[index] = lista[index].rstrip('\n')
                    lista[index] = int(lista[index])
                quick_sort(lista, 0, len(lista) - 1)
                n_lista = lista
                print('*** Aplicado o Quick Sort ***\n')
                print(lista)
                arquivo = open(nome_arq, "w")
                frases = list()
                for i in range(len(n_lista)):
                    frases.append(str(n_lista[i]))
                    frases.append('\n')
                arquivo.writelines(frases)
                arquivo.close()
                x5 = int(input('\n\n Aperte 9 Para Voltar: '))

        except FileNotFoundError:
            print('Arquivo não Foi encontrado ')
            print('Erros Provaveis: Nome errado')
def test_one(): 

  arr = [3]

  assert quick_sort(arr, 0, len(arr)-1) == [3] 
from shell_sort import *

if __name__ == "__main__":
    parser = argparse.ArgumentParser(prog='main.py')
    parser.add_argument('--insertion',
                        help='insertion sort algorithm',
                        dest='insertion',
                        action="store_true")
    parser.add_argument('--bubble',
                        help='Bubble sort algorithm',
                        dest='bubble',
                        action="store_true")
    parser.add_argument('--quick',
                        help='quick sort algorithm',
                        dest='quick',
                        action="store_true")
    parser.add_argument('--shell',
                        help=' shell sort algorithm',
                        dest='shell',
                        action="store_true")

    args = parser.parse_args()
    if args.insertion:
        sort()
    if args.bubble:
        bubble()
    if args.quick:
        quick_sort()
    if args.shell:
        shell_sort()
Esempio n. 32
0
from quick_sort import *
lst = [8, 7, 6, 5, 4, 3, 2, 1]
quick_sort(lst)
print(lst)
Esempio n. 33
0
 def test_quicksort(self):
     quick_sort(self.ex)
     self.assertEqual(self.ex, [1, 2, 3, 4, 5, 6, 7, 8])