Ada
Ada
import time
def linear_search(arr,n,key):
for i in range(n):
if arr[i]== key:
return i
return -1
def record(r):
results =[]
for _ in range(r):
repeat = 10000
result = -1
start = time.time()
for _ in range(repeat):
result = linear_search(arr,n,key)
end=time.time()
if result!= -1:
else:
time_taken = (end-start)*1000
results.append((n,time_taken))
return results
def plot_results(results):
plt.figure()
plt.plot(n_values,times,'o-')
plt.grid(True)
plt.show()
results = record(r)
plot_results(results)
PGM: 2
import time
def binary_search(arr,low,high,key):
if arr[mid] == key:
return mid
low = mid +1
else:
high = mid - 1
return -1
def main():
n_values = []
times = []
for _ in range(r):
repeat = 10000
result = -1
start = time.time()
for _ in range(repeat):
result = binary_search(arr,0,n-1,key)
end=time.time()
if result!= -1:
else:
time_taken = (end-start)*1000
n_values.append(n)
times.append(time_taken)
plt.figure()
plt.plot(n_values,times,'o-')
plt.xlabel('Number of Elements')
plt.grid(True)
plt.show()
if __name__ == "__main__":
main()
PGM: 3
def toh(n,source,temp,dest):
global count
if n > 0:
toh(n-1,source,dest,temp)
print(f"Move Disk{n}{source}->{dest}")
count += 1
toh(n-1,temp,source,dest)
source = 'S'
temp = 'T'
dest = 'D'
count = 0
print("Sequence is:")
toh(n,source,temp,dest)
print("The number of Moves: ",count)
PGM: 4
import timeit
import random
def Input(array,n):
for i in range(0,n):
ele = random.randrange(1,50)
array.append(ele)
def selection_sort(array,size):
mid_index = ind
mid_index = j
(array[ind],array[mid_index]) = (array[mid_index],array[ind])
N = []
cpu = []
for t in range(0,trial):
array = []
Input(array,n)
start = timeit.default_timer()
selection_sort(array,n)
print(array)
N.append(n)
cpu.append(round(float(times) * 1000000,2))
print("N cpu")
print(N[t],cpu[t])
plt.plot(N,cpu)
plt.scatter(N,cpu,color="red",marker="*",s=50)
plt.grid(True)
plt.show()
PGM: 5
def power_bruteforce(a,n):
result=1
for i in range(n):
result*=a
return result
def power_divide_conquer(a,n):
if n==0:
return 1
elif n%2==0:
return power_divide_conquer(a*a,n//2)
else:
return a*power_divide_conquer(a*a,n//2)
result_brute=power_bruteforce(a,n)
result_divide_conquer=power_divide_conquer(a,n)
PGM: 6
import timeit
import random
i = (low - 1)
pivot = Array[high]
i=i+1
return (i + 1)
quickSort(Array, low, pi - 1)
quickSort(Array, pi + 1, high)
N = []
CPU = []
Array = []
Input(Array, n)
start = timeit.default_timer()
quickSort(Array, 0, n - 1)
print("Sorted Array:")
print(Array)
N.append(n)
print("N CPU")
print(N[t], CPU[t])
plt.plot(N, CPU)
plt.scatter(N, CPU, color="red", marker="*", s=50)
plt.show()
PGM: 7
def factorial(n):
fact=1
for i in range(2,n+1):
fact*=i
return fact
def binomialCoeff_bruteForce(n,k):
def binomialCoeff_DP(n,k):
for i in range(n+1):
for j in range(min(i,k)+1):
if j==0 or j==i:
C[i][j]=1
else:
C[i][j]=C[i-1][j-1]+C[i-1][j]
return C[n][k]
result_bruteForce=binomialCoeff_bruteForce(n,k)
result_DP=binomialCoeff_DP(n,k)
PGM: 8
INF = 99999
print("The following matrix shows the shortest distance between every pair of vertices")
for i in range(V):
for j in range(V):
if D[i][j] == INF:
else:
print()
for i in range(V):
for j in range(V):
D[i][j] = C[i][j]
for k in range(V):
for i in range(V):
for j in range(V):
printSolution(V, D)
for i in range(V):
floyd(V, C)
PGM: 9
import time
import math
sum = 0.0
for i in range(n+1):
return sum
def hornersrule(coef, n, x):
result = coef[n]
return result
coef = [0]*(n+1)
coef[i] = int(input())
start = time.time()
brute_force_result = bruteforce(coef, n, x)
end = time.time()
start = time.time()
horners_rule_result = hornersrule(coef, n, x)
end = time.time()
PGM: 10
MAX_CHARS = 256
for i in range(MAX_CHARS):
badchar[i] = -1
for i in range(Size):
badchar[ord(pat[i])] = i
m = len(pat)
n = len(text)
badchar = [-1]*MAX_CHARS
badCharHeuristic(pat, m, badchar)
s=0
j = m-1
j -= 1
if j < 0:
else:
patternsearch(text,pat)
PGM: 11
length = 0
lps[0] = 0
i=1
while i < M:
if pat[i] == pat[length]:
length += 1
lps[i] = length
i += 1
else:
if length !=0:
lenght = lps[length - 1]
else:
lps[i] = 0
i += 1
M = len(pat)
N = len(txt)
lps = [0]*M
computeLPSArray(pat, M, lps)
i=j=0
while i < N:
if pat[j] == txt[i]:
i += 1
j += 1
if j == M:
j = lps[j - 1]
if j != 0:
j = lps[j - 1]
else:
i += 1
KMPSearch(pat, txt)
PGM:12
MAX = 100
visited = [0]*MAX
queue = [0]*MAX
def BFS(v):
front = 0
rear = -1
visited[v] = 1
queue[rear + 1] = v
rear +=1
v = queue[front]
front += 1
print(f"{v} ", end="")
queue[rear +1] = i
rear += 1
visited[i] = 1
if __name__=="__main__":
n = int(input())
visited[i] = 0
v = int(input())
BFS(v)
PGM:13
import sys
min_value = sys.maxsize
for v in range(n):
min_value = key[v]
min_index = v
return min_index
totalWeight = 0
print("Edge Weight")
totalWeight += c[i][parent[i]]
return totalWeight
parent = [None]*n
key = [sys.maxsize]*n
mstSet = [False]*n
key[0] = 0
parent[0] = -1
u = minKey(key, mstSet, n)
mstSet[u] = True
for v in range(n):
parent[v] = u
key[v] = c[u][v]
totalWeight = printMST(parent, c, n)
c = []
for i in range(n):
c.append(list(map(int, input().split())))
primMST(c, n)
PGM: 14A
def main():
count = 0
indeg = [0] * n
flag = [0] * n
i, j, k = 0, 0, 0
for i in range(n):
row = input().split()
for j in range(n):
c[i][j] = int(row[j])
for i in range(n):
for j in range(n):
indeg[i] += c[j][i]
for k in range(n):
print(f"{k+1:3}", end="")
flag[k] = 1
count += 1
for i in range(n):
if c[k][i] == 1:
indeg[i] -=1
return 0
if __name__ == "__main__":
main()
PGM: 14B
for k in range(n):
for i in range(n):
for j in range(n):
c[i][j] = 1
for i in range(n):
for j in range(n):
print()
def main():
c = []
print("Enter the adjacency cost matrix:")
for i in range(n):
c.append(row)
warshalls(c, n)
main()
PGM: 15
global count, x, w, d, i
x[k] = 1
if s + w[k] == d:
if x[i]:
x[k] = 0
sum_of_subsets(s, k + 1, r - w[k])
if __name__ == "__main__":
w = [0] * 10
x = [0] * 10
count = 0
i=0
for i in range(n):
w[i] = int(input())
sum = 0
for i in range(n):
x[i] = 0
sum += w[i]
else:
sum_of_subsets(0, 0, sum)