TC Sort Search - Ipynb Colab

Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

keyboard_arrow_down Big O

Time Complexity

Looking up a specific element in an array, like this for example:

O(1) print( my_array[97] )

No matter the size of the array, an element can be looked up directly, it just requires one operation. (This is not rea

O(n) Finding the lowest value. The algorithm must do n operations in an array with n values to find the lowest value, be

Bubble sort, Selection sort and Insertion sort are algorithms with this time complexity
O(n2)
Large data sets slows down these algorithms significantly. With just an increase in n
O(nlogn) The Quicksort algorithm is faster on average than the three sorting algorithms mentioned above, with O(nlogn) be

keyboard_arrow_down O(1)
my_array = [7, 12, 9, 4, 11]
print( my_array[0] )

keyboard_arrow_down O(n)
my_array = [7, 12, 9, 4, 11]
minVal = my_array[0] # Step 1

for i in my_array: # Step 2


if i < minVal: # Step 3
minVal = i

print('Lowest value: ',minVal) # Step 4

Lowest value: 4

keyboard_arrow_down Sorting Algorithm


keyboard_arrow_down Buble Sort
Merupakan Algoritma sorting dengan time complexity O(n2).
Proses pengurutan secara bertahap. bergerak/berpindah ke posisinya yang tepat, seperti
gelembung.
Buble sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen
berikutnya.
Jika elemen sekarang lebih besar dari elemen berikutnya maka kedua elemen tersebut
ditukar.

my_array = [64, 34, 25, 12, 22, 11, 90, 5]

n = len(my_array)
for i in range(n-1):
for j in range(n-i-1):
if my_array[j] > my_array[j+1]:
my_array[j], my_array[j+1] = my_array[j+1], my_array[j]

print("Sorted array:", my_array)

Sorted array: [5, 11, 12, 22, 25, 34, 64, 90]

keyboard_arrow_down Selection Sort


Merupakan kombinasi antara sorting dan searching dengan time complexity O(n2).
Tetapkan minimum index pada index-0.
Untuk setiap proses, akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai
terkecil atau terbesar kemudian akan ditukarkan ke posisi yang tepat di dalam array.

my_array = [64, 34, 25, 5, 22, 11, 90, 12]

n = len(my_array)
for i in range(n-1):
min_index = i
for j in range(i+1, n):
if my_array[j] < my_array[min_index]:
min_index = j
min_value = my_array.pop(min_index)
my_array.insert(i, min_value)

print("Sorted array:", my_array)

Sorted array: [5, 11, 12, 22, 25, 34, 64, 90]
keyboard_arrow_down Searching Algorithm
keyboard_arrow_down Sequential Search
def sequential_search(data, target):
for i in range(len(data)):
if data[i] == target:
return i
return -1 # Jika nilai tidak ditemukan, fungsi mengembalikan -1

# Contoh penggunaan fungsi pencarian sekuensial


my_list = [3, 5, 4, 2, 8, 1, 7, 6]

target_value = 8
result = sequential_search(my_list, target_value)

if result != -1:
print(f"Nilai {target_value} ditemukan pada indeks ke-{result} di dalam list")
else:
print(f"Nilai {target_value} tidak ditemukan dalam list")

Nilai 8 ditemukan pada indeks ke-4 di dalam list

keyboard_arrow_down Binary Search


def binary_search(data, target):

low = 0
high = len(data) - 1

while low <= high:


mid = (low + high) // 2
if data[mid] == target:
return mid
elif data[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1 # Jika nilai tidak ditemukan, fungsi mengembalikan -1

# Contoh penggunaan fungsi pencarian biner


my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target_value = 8
result = binary_search(my_list, target_value)

if result != -1:
print(f"Nilai {target_value} ditemukan pada indeks ke-{result} di dalam list")
else:
print(f"Nilai {target_value} tidak ditemukan dalam list")

Nilai 8 ditemukan pada indeks ke-7 di dalam list

keyboard_arrow_down Breadth Fist Search


from collections import defaultdict, deque

class Graph:
def __init__(self):
self.graph = defaultdict(list)

def add_edge(self, u, v):


self.graph[u].append(v)

def bfs(self, start, end):


visited = set()
queue = deque()
queue.append([start])

if start == end:
return "Start and end nodes are the same."

while queue:
path = queue.popleft()
node = path[-1]

if node == end:
return path

if node not in visited:


visited.add(node)
neighbors = self.graph[node]

for neighbor in neighbors:


new_path = list(path)
new_path.append(neighbor)
queue.append(new_path)

return "No path found between the nodes."

# Inisialisasi graf
graph = Graph()

# Menambahkan edge/edge
graph.add_edge('A', 'B')
graph.add_edge('A', 'D')
graph.add_edge('B', 'C')
graph.add_edge('B', 'F')
graph.add_edge('C', 'E')
graph.add_edge('C', 'G')
graph.add_edge('G', 'E')
graph.add_edge('E', 'B')
graph.add_edge('E', 'F')
graph.add_edge('F', 'A')
graph.add_edge('D', 'F')
# graph add edge('A' 'B')

You might also like