Created
April 15, 2022 07:08
-
-
Save agung037/cfd1b6cdeabb385e219f8c3bd1acf3de to your computer and use it in GitHub Desktop.
menguji efisiensi berbagai algoritma untuk mengurutkan list
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import random | |
import time | |
def bubbleSort(my_list): | |
for x in range(len(my_list)-1,0,-1): | |
for i in range(x): | |
if my_list[i]>my_list[i+1]: | |
temp = my_list[i] | |
my_list[i] = my_list[i+1] | |
my_list[i+1] = temp | |
return my_list | |
def insertionSort(my_list): | |
for i in range(1, len(my_list)): | |
key = my_list[i] | |
j = i-1 | |
while j >=0 and key < my_list[j] : | |
my_list[j+1] = my_list[j] | |
j -= 1 | |
my_list[j+1] = key | |
return my_list | |
def mergeSort(my_arr): | |
if len(my_arr) > 1: | |
mid = len(my_arr)//2 | |
L = my_arr[:mid] | |
R = my_arr[mid:] | |
mergeSort(L) | |
mergeSort(R) | |
i = j = k = 0 | |
while i < len(L) and j < len(R): | |
if L[i] < R[j]: | |
my_arr[k] = L[i] | |
i += 1 | |
else: | |
my_arr[k] = R[j] | |
j += 1 | |
k += 1 | |
while i < len(L): | |
my_arr[k] = L[i] | |
i += 1 | |
k += 1 | |
while j < len(R): | |
my_arr[k] = R[j] | |
j += 1 | |
k += 1 | |
return my_arr | |
def quick_sort(s): | |
if len(s) == 1 or len(s) == 0: | |
return s | |
else: | |
pivot = s[0] | |
i = 0 | |
for j in range(len(s)-1): | |
if s[j+1] < pivot: | |
s[j+1],s[i+1] = s[i+1],s[j+1] | |
i += 1 | |
s[0],s[i] = s[i],s[0] | |
first_part = quick_sort(s[:i]) | |
second_part = quick_sort(s[i+1:]) | |
first_part.append(s[i]) | |
return first_part + second_part | |
# TESTER AREA | |
jumlah_list = int(input("Masukan jumlah list : ")) | |
panjang_list = int(input("Masukan panjang list(maks 800) : ")) | |
def generate_list(n, length): | |
result = [] | |
for i in range(n): | |
result.append([random.randint(1,length) for x in range(length)]) | |
return result | |
print(f"pengujian dengan {jumlah_list} list random dengan panjang masing masing list {panjang_list} item\n\n") | |
# membuat 10000 list yang random dengan panjang masing masing list 500 item | |
tester_list = generate_list(jumlah_list, panjang_list) | |
# menguji algoritma bubble sort | |
bubble_sort_timer_start = time.time() | |
for item in tester_list: | |
bubbleSort(item) | |
print(f"Bubble Sort \t\t{round((time.time() - bubble_sort_timer_start), 3)} Detik") | |
# menguji algoritma merge sort | |
merge_sort_timer_start = time.time() | |
for item in tester_list: | |
mergeSort(item) | |
print(f"Merge Sort\t\t{round((time.time() - merge_sort_timer_start), 3)} Detik") | |
# menguji algoritma quick sort | |
quick_sort_timer_start = time.time() | |
for item in tester_list: | |
quick_sort(item) | |
print(f"Quick Sort\t\t{round((time.time() - quick_sort_timer_start), 3)} Detik") | |
# menguji algoritma insertsion sort | |
insertsion_sort_timer_start = time.time() | |
for item in tester_list: | |
insertionSort(item) | |
print(f"Insertsion Sort\t\t{round((time.time() - insertsion_sort_timer_start), 3)} Detik") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment