예제 #1
0
def start():
    global data

    if var.get() == OptionList[0]:
        bub_sort(data, drawdata, speed.get())
    if var.get() == OptionList[1]:
        mergeSort(data, 0, int(data_size.get()) - 1, drawdata, speed.get())
    if var.get() == OptionList[2]:
        insertionSort(data, drawdata, speed.get())
    if var.get() == OptionList[3]:
        quickSort(data, 0, int(data_size.get()) - 1, drawdata, speed.get())
예제 #2
0
def occurOnce(arr):
    quickSort(arr, 0, len(arr))
    frequency = 1
    for i in range(1, len(arr)):
        if arr[i] == arr[i - 1]:
            frequency += 1
        else:
            if frequency == 1:
                print(arr[i - 1])
            else:
                frequency = 1
            if i == (len(arr) - 1):
                print(arr[i])
예제 #3
0
def mostFrequent(arr):
    quickSort(arr, 0, len(arr))
    frequency = 1
    freqCheck = 1
    value = arr[0]

    for i in range(1, len(arr)):
        if arr[i] == arr[i - 1]:
            freqCheck += 1
        else:
            if freqCheck >= frequency:
                frequency = freqCheck
                value = arr[i - 1]
                freqCheck = 1

    return [value, frequency]
예제 #4
0
def methodTester(sortMethod, baseSize=10):

    #store the sorted file names
    sorted_files = []

    # Create the random number files
    files = _fileCreator(baseSize)

    # Create the time table file
    timing_file = open(str(sortMethod) + "Sort_test_times", 'w')
    timing_file.write("Input Size (n):	Time cost:")

    # For each of the files:
    for file in files:

        # Create a list from the numbers stored in the file
        number_list = _fileToList(file)
        number_count = len(number_list)
        for i in range(number_count):
            number_list[i] = float(number_list[i])

        # Create the file to store the sorted list
        sortedFileName = str(file) + "_" + sortMethod + "sort_sorted"
        sorted_files.append(sortedFileName)
        sortedFile = open(sortedFileName, 'w')

        # Check sorting method, then sort while timing
        if sortMethod == 'merge':
            start_time = time.time()
            numberListSorted = mSort.mergeSort(number_list, 1,
                                               len(number_list))
            stop_time = time.time()
        elif sortMethod == 'quick':
            start_time = time.time()
            numberListSorted = qSort.quickSort(number_list, 0,
                                               len(number_list) - 1)
            stop_time = time.time()
        elif sortMethod == 'insertion':
            start_time = time.time()
            numberListSorted = iSort.insertionSort(number_list,
                                                   len(number_list))
            stop_time = time.time()
        else:
            print('''Uh oh, the provided sort method has yet to be implemented!
Please use either 'merge', 'quick', or 'insertion'.\n''')

        # Store the sorted list in its respective file
        sortedFile.write(str(numberListSorted))
        sortedFile.close()

        # Calculate the time taken, then add it to the timing file
        sort_time = stop_time - start_time
        timing_file.write("\n" + str(number_count) + "		" + str(sort_time))

    # Close the timing file, and prompt the user on whether
    #  or not to delete the created files used to calculate
    #  the timing data.
    timing_file.close()
    files.extend(sorted_files)
    _askDelete(files)
예제 #5
0
def main():

    # create a list of random integers between -100 and 100
    myList = list(np.random.randint(-100, 100, 10))
    print(f'Unsorted list:\t\t{myList}')

    # create an object with which to sort, using the list as an input
    sorter = quickSort(myList)
    # print the sorted list
    print(f'Sorted list:\t\t{sorter.sort()}')
def sorted_squares(nums):
    result = []
    for i in range(len(nums)):
        sqr = nums[i]**2
        if 


    i = 0
    for i in range(len(result)):
        if i = 0

    array_len = len(result)
    # result = quickSort(result,0, array_len-1)
    return quickSort(result,0, array_len-1)
예제 #7
0
f.write("/nOriginal data:/n")
f.write(str(arr))
#使用python内置的timSort排序算法
a=arr[:]
print '/nStart internal sort...'
t1=time.clock()
a.sort()
t2=time.clock()
print 'Internal sort finisehd. Time used=%fs'%(t2-t1)
f.write('/n/nInternal sort [Time used=%fs]/n'%(t2-t1))
f.write(str(a))
del a
a=arr[:]
print '/nStart quick sort...'
t1=time.clock()
quick_sort.quickSort(a)
t2=time.clock()
print 'Quick sort finished. Time used=%fs'%(t2-t1)
f.write('/n/nQuick sort [Time used=%fs]/n'%(t2-t1))
f.write(str(a))
del a
a=arr[:]
print '/nStart heap sort...'
t1=time.clock()
heap_sort.heapSort(a)
t2=time.clock()
print 'Heap sort finished. Time used=%fs'%(t2-t1)
f.write('/n/nHeap sort [Time used=%fs]/n'%(t2-t1))
f.write(str(a))
del a
a=arr[:]
def test_random_list():
    test_list = [8, 4, 23, 42, 16, 15]
    expected = [4, 8, 15, 16, 23, 42]
    quickSort(test_list, 0, len(test_list) - 1)
    assert test_list == expected
예제 #9
0
from quick_sort import quickSort
print(quickSort([10, 5, 2, 3]))
def kth_largest_element(array, k):
    array = quickSort(array)
    array.reverse()
    return array[k - 1]
예제 #11
0
def testSort(tests, n, minimum, maximum):
    time = [datetime.timedelta(0)] * 6
    for i in range(tests):
        ar = createArray(n, minimum, maximum)

        i_sort = list(ar)
        m_sort = list(ar)
        q_sort = list(ar)
        qr_sort = list(ar)
        h_sort = list(ar)

        d = datetime.datetime.now()
        insertion_sort.insertionSort(i_sort)
        time[0] += (datetime.datetime.now() - d)

        d = datetime.datetime.now()
        m_sort = merge_sort.mergeSort(m_sort)
        time[1] += (datetime.datetime.now() - d)

        d = datetime.datetime.now()
        quick_sort.quickSort(q_sort)
        time[2] += (datetime.datetime.now() - d)

        d = datetime.datetime.now()
        quick_sort.quickSortRand(qr_sort)
        time[3] += (datetime.datetime.now() - d)

        d = datetime.datetime.now()
        h_sort = heap_sort.heapSort(h_sort)
        time[4] += (datetime.datetime.now() - d)

        d = datetime.datetime.now()
        bible = sorted(ar)
        time[5] += (datetime.datetime.now() - d)

        error = False
        if not compareArrays(bible, i_sort):
            print "Insertion sort error: ar =", ar, ", i_sort =", i_sort, ", bible =", bible
            error = True
        if not compareArrays(bible, m_sort):
            print "Merge sort error: ar =", ar, ", m_sort =", m_sort, ", bible =", bible
            error = True
        if not compareArrays(bible, q_sort):
            print "Quick sort (deterministic) error: ar =", ar, ", q_sort =", q_sort, ", bible =", bible
            error = True
        if not compareArrays(bible, qr_sort):
            print "Quick sort (random) error: ar =", ar, ", qr_sort =", qr_sort, ", bible =", bible
            error = True
        if not compareArrays(bible, h_sort):
            print "Heap sort error: ar =", ar, ", h_sort =", h_sort, ", bible =", bible
            error = True

        if not error:
            print "Test", i + 1, "successful"

    print "Insertion sort time =", time[0]
    print "Merge sort time =", time[1]
    print "Quick sort (deterministic) time =", time[2]
    print "Quick sort (random) time =", time[3]
    print "Heap sort time =", time[4]
    print "Default Python sort time =", time[5]
예제 #12
0
if __name__ == "__main__":
    main()

    A = vetor[1:]
    # primeiro elemento da lista eh o tamanho da lista
    n = vetor[0]

    if opt == 'SS':
        saida(selection_sort(A))
    if opt == 'IS':
        saida(insertion_sort(A))
    if opt == 'HS':
        saida(heapsort(A))
    if opt == 'MS':
        saida(topDownMergeSort(A))
    if opt == 'QS':
        saida(quickSort(A))
    if opt == 'CS':
        saida(counting_sort(A))
    if opt == 'RS':
        saida(radix_sort(A))








    
예제 #13
0
 def test_big_input(self, rst, nums):
     self.assertEqual(rst, quickSort(nums))
예제 #14
0
 def test_basic(self, rst, nums):
     self.assertEqual(rst, quickSort(nums))
예제 #15
0
    def test_quickSort_array_last_val(self):
        arr = self.test_create_array()
        sorted_arr = quickSort(arr)

        self.assertEqual(sorted_arr[3], 2)
예제 #16
0
#read in text files and call to three sum 
import os
import glob
import quick_sort	
import time

current_dir = os.getcwd()

data_dir = os.listdir('hw2-5.data')
os.chdir('hw2-5.data')

for x in range(0,1):

	for file in data_dir:
		input_list = []
		print(file)		#check current file we are reading
		
		f = open(file, "r")
		file_by_line = f.readlines()		
		
		for x in file_by_line:
			input_list.append(x.strip())		#adding values from text file into an array

		input_list = list(map(int, input_list))	#converting string to an integer 

		start_time = time.time()
		quick_sort.quickSort(input_list)
		elapsed_time = time.time() - start_time - 0.005
		print(elapsed_time)
		#print(input_list)
    # algoritmos
    start = time.time()
    selection_sort(SS)
    tempo['SS'] = (time.time() - start)*1000

    start = time.time()
    insertion_sort(IS)
    tempo['IS'] = (time.time() - start)*1000

    start = time.time()
    heapsort(HS)
    tempo['HS'] = (time.time() - start)*1000

    start = time.time()
    quickSort(QS)
    tempo['QS'] = (time.time() - start)*1000

    start = time.time()
    topDownMergeSort(MS)
    tempo['MS'] = (time.time() - start)*1000

    start = time.time()
    CS, menorValor = entrada_NegaToPosi(CS, n)    # deixa lista totalmente positiva
    CS = counting_sort(CS)
    CS = entrada_PosiToNega(CS, menorValor, n)    # retorna a lista com valores original
    tempo['CS'] = (time.time() - start)*1000

    start = time.time()
    RS, menorValor = entrada_NegaToPosi(RS, n) # deixa lista totalmente positiva
    RS = radix_sort(RS)
def test_couple_zeros():
    test_list = [0, 0, 1, 1, 0]
    expected = [0, 0, 0, 1, 1]
    quickSort(test_list, 0, len(test_list) - 1)
    assert test_list == expected
def test_nearly_sorted():
    test_list = [2, 3, 5, 7, 13, 11]
    expected = [2, 3, 5, 7, 11, 13]
    quickSort(test_list, 0, len(test_list) - 1)
    assert test_list == expected
def test_few_uniques():
    test_list = [5, 12, 7, 5, 5, 7]
    expected = [5, 5, 5, 7, 7, 12]
    quickSort(test_list, 0, len(test_list) - 1)
    assert test_list == expected
예제 #21
0
파일: test.py 프로젝트: igribov/alg
from quick_sort import quickSort
from random import randint
import time, copy

A = [ randint(1,100) for i in range(1, 10000) ]
A2 = copy.copy(A)

start = time.time()
quickSort(A,0,len(A)-1)
end = time.time()

print(end - start)

start = time.time()
A2.sort()
end = time.time()

print(end - start)
예제 #22
0
    def test_quickSort_array(self):
        arr = self.test_create_array()
        sorted_arr = quickSort(arr)

        self.assertEqual(sorted_arr[0], 1)
예제 #23
0
    high = len(sorted_numbers)
    while high >= low:
        mid = (low + high) // 2
        if integer == sorted_numbers[mid]:
            return mid
        elif integer < sorted_numbers[mid]:
            high = mid - 1
        else:
            low = mid + 1
    return -1


if __name__ == "__main__":
    # Random number generation
    print("Binary search algorithm")
    limit = 10
    rand_array = np.random.randint(0, 100, limit)
    print("numbers")
    print(rand_array)
    # sort
    quickSort(rand_array, 0, limit-1)
    print("Sorted array")
    print(rand_array)
    # search
    element = int(input("Enter the number to search: "))
    index = binarySearch(rand_array, element)
    if index != -1:
        print(f"{element} found at index {index} in the sorted array.")
    else:
        print(f"{element} is not in the array.")
예제 #24
0
f.write("/nOriginal data:/n")
f.write(str(arr))
#使用python内置的timSort排序算法
a = arr[:]
print '/nStart internal sort...'
t1 = time.clock()
a.sort()
t2 = time.clock()
print 'Internal sort finisehd. Time used=%fs' % (t2 - t1)
f.write('/n/nInternal sort [Time used=%fs]/n' % (t2 - t1))
f.write(str(a))
del a
a = arr[:]
print '/nStart quick sort...'
t1 = time.clock()
quick_sort.quickSort(a)
t2 = time.clock()
print 'Quick sort finished. Time used=%fs' % (t2 - t1)
f.write('/n/nQuick sort [Time used=%fs]/n' % (t2 - t1))
f.write(str(a))
del a
a = arr[:]
print '/nStart heap sort...'
t1 = time.clock()
heap_sort.heapSort(a)
t2 = time.clock()
print 'Heap sort finished. Time used=%fs' % (t2 - t1)
f.write('/n/nHeap sort [Time used=%fs]/n' % (t2 - t1))
f.write(str(a))
del a
a = arr[:]
예제 #25
0
import quick_sort

# we will be searching using binary search but for that we need a sorted array
items = [2, 4, 1, 10, 13, 5, 6, 7, 8]

quick_sort.quickSort(items, 0, len(items) - 1)


def binarySearch(item, dataset):

    # finding middle point
    middle = (len(dataset) - 1) // 2
    print(middle)

    if item == dataset[middle]:
        return middle
    elif item > dataset[middle]:
        return binarySearch(item, dataset[middle:])
    elif item < dataset[middle]:
        return binarySearch(item, dataset[:middle])