Skip to content

Instantly share code, notes, and snippets.

@agung037
Created April 15, 2022 07:08
Show Gist options
  • Save agung037/cfd1b6cdeabb385e219f8c3bd1acf3de to your computer and use it in GitHub Desktop.
Save agung037/cfd1b6cdeabb385e219f8c3bd1acf3de to your computer and use it in GitHub Desktop.
menguji efisiensi berbagai algoritma untuk mengurutkan list
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