Ada Lab File
Ada Lab File
PRACTICAL FILE
# Example usage:
nums = [2, 7, 11, 15]
target = 9
result = two_sum(nums, target)
if result:
print(f"Indices of the two numbers that add up to the target:
{result}")
else:
print("No solution found.")
OUTPUT:
# Example usage
nums = [-1, 0, 1, 2, -1, -4]
result = three_sum(nums)
if result:
print("Unique triplets that sum to zero:")
for triplet in result:
print(triplet)
else:
print("No solution found.")
OUTPUT:
EXPERIMENT-2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
# Example usage
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 5
result = binary_search(arr, target)
if result != -1:
print(f"Element {target} found at index {result}")
else:
print(f"Element {target} not found in the array")
OUTPUT:
EXPERIMENT-3
merge_sort(left_half)
merge_sort(right_half)
i=j=k=0
# Example usage
arr = [12, 11, 13, 5, 6, 7]
print("Original array:", arr)
merge_sort(arr)
print("Sorted array:", arr)
OUTPUT:
EXPERIMENT-4
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
# Example usage
arr = [12, 4, 5, 6, 7, 3, 1, 15]
print("Original array:", arr)
sorted_arr = quick_sort(arr)
print("Sorted array:", sorted_arr)
OUTPUT:
EXPERIMENT-5
class Graph:
def __init__(self):
self.graph = defaultdict(list)
while queue:
node = queue.popleft()
print(node, end=" ")
for neighbor in self.graph[node]:
if not visited[neighbor]:
queue.append(neighbor)
visited[neighbor] = True
g = Graph()
g.add_edge(0, 1)
g.add_edge(0, 2)
g.add_edge(1, 2)
g.add_edge(2, 0)
g.add_edge(2, 3)
g.add_edge(3, 3)
print("Breadth-First Traversal (starting from vertex 2):")
g.bfs(2)
OUTPUT:
FOR DFS:
from collections import defaultdict
class Graph:
def __init__(self):
self.graph = defaultdict(list)
OUTPUT:
EXPERIMENT-7
OUTPUT:
EXPERIMENT-8
index = L[m][n]
i=m
j=n
while i > 0 and j > 0:
if S1[i-1] == S2[j-1]:
lcs_algo[index-1] = S1[i-1]
i -= 1
j -= 1
index -= 1
for v in range(self.V):
if key[v] < min_value and not mst_set[v]:
min_value = key[v]
min_index = v
return min_index
def prim_mst(self):
key = [sys.maxsize] * self.V
parent = [-1] * self.V
key[0] = 0
mst_set = [False] * self.V
parent[0] = -1
for v in range(self.V):
if self.graph[u][v] > 0 and not mst_set[v] and key[v] >
self.graph[u][v]:
key[v] = self.graph[u][v]
parent[v] = u
self.print_mst(parent)
g.prim_mst()
Output:
EXPERIMENT-10
return max_value
# Example usage
items = [(10, 60), (20, 100), (30, 120)] # Format: (weight, value)
capacity = 50
max_value = fractional_knapsack(items, capacity)
print(f"Maximum value obtainable: {max_value}")
Output: