def Introsort_Util(arr, begin, end, depthLimit): size = end - begin if size < 16: # if the data set is small, call insertion sort Insertion_Sort.insertion_sort(arr) return if depthLimit == 0: # if the recursion limit is occurred call heap sort Heap_Sort.heapSort(arr) return pivot = statistics.median([begin, begin + size // 2, end]) (arr[pivot], arr[end]) = (arr[end], arr[pivot]) partitionPoint = Quick_Sort.pivot(arr, begin, end) Introsort_Util(arr, begin, partitionPoint - 1, depthLimit - 1) Introsort_Util(arr, partitionPoint + 1, end, depthLimit - 1)
def bucket_sort(arr): n = len(arr) B = [] for i in range(n): B.append([]) for j in arr: index_b = int(n * j) B[index_b].append(j) for i in range(n): B[i] = Insertion_Sort.insertion(B[i]) k = 0 for i in range(n): for j in range(len(B[i])): arr[k] = B[i][j] k += 1 return arr
t = timeit.Timer(lambda: Comb_Sort.comb(f3)) print("Comb sort ", t.timeit(number=1)) #print(f3,"\n") t = timeit.Timer(lambda: Heap_Sort.heapSort(f4)) print("Heap sort ", t.timeit(number=1)) #print(f4,"\n") t = timeit.Timer(lambda: Quick_Sort.quick_sort(f5)) print("Quick sort ", t.timeit(number=1)) #print(f5,"\n") # t=timeit.Timer(lambda : Radix_Sort.radixsort(f6)) # print("Radix sort ",t.timeit(number = 1)) # print(f6, "\n") t = timeit.Timer(lambda: Shell_Sort.shell(f7)) print("Shell sort ", t.timeit(number=1)) #print(f7, "\n") t = timeit.Timer(lambda: Bubble_Sort.bubble(f8)) print("Bubble sort ", t.timeit(number=1)) #print(f7, "\n") t = timeit.Timer(lambda: Insertion_Sort.insertion(f9)) print("Insertion sort ", t.timeit(number=1)) #print(f7, "\n") t = timeit.Timer(lambda: Shaker_Sort.shaker(f10)) print("Shaker sort ", t.timeit(number=1)) #print(f7, "\n")
:param function: 需要计时的函数 :return: None ''' @wraps(function) def function_timer(*args, **kwargs): print('[Function: {name} start...]'.format(name=function.__name__)) t0 = time.time() result = function(*args, **kwargs) t1 = time.time() print('[Function: {name} finished, spent time: {time:.2f}s]'.format( name=function.__name__, time=t1 - t0)) return result if __name__ == '__main__': A = np.random.randint(1, 10000, [5000]).tolist() bubble_sort.bubble(A) Insertion_Sort.insertion_sort(A) Choice_Sort.choice_sort(A) start = time.time() Merge_Sort.merge_sort(A) end = time.time() print(A) print(end - start) print() Shell_Sort.shell_sort(A) # Heap_sort.heap_sort(A) Quick_sort.quick_sort(A)
import Bubble_Sort list = [7, 8, 6, 4, 1, 3] print("Data yang di sort", list) print("Bubble Sort :") Bubble_Sort.bubble_sort(list) print('================================================') import Insertion_Sort list = [2, 54, 38, 76, 23, 56, 84, 90] print("Data yang di sort", list) print("Insertion Sort :") Insertion_Sort.insertion(list) print('=================================================') import Selection_Sort list = [98, 6, 33, 11, 57, 33, 44, 55, 29, 76, 60, 81] print('Data yang di sort :', list) print('Selection Sort :') Selection_Sort.ss(list) print('=================================================') import Quick_Sort a = [68, 90, 78, 44, 34, 20, 100, 56, 34, 2] print('Data yang di sort :', list) print('Quick Sort :') Quick_Sort.quicksort(a, 0, len(a) - 1) print('=================================================')
import Books import Insertion_Sort der_prozess = Books.Books('Der Prozess', 'Franz Kafka', '9783958551930', 263) vermessung_der_welt = Books.Books('Die Vermessung der Welt', 'Daniel Kehlmann', '9783499241000', 224) the_phycisian = Books.Books('The Physician', 'Noah Gordon', '1453271104', 600) der_prozess.add_author('Ghostwriter') books_list = [der_prozess, vermessung_der_welt, the_phycisian] for element in books_list: print(element.title) books_list_sorted = Insertion_Sort.insort(books_list) for element in books_list_sorted: print(element.title)