Page 1 of 9

ADA LAB FILE

Q1. Write a Program to perform Linear Search using both iteration and recursion method.

SOURCE CODE:

//Linear Search

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int iteration(int arr[], int n, int val)

{

int i;

for (i = 0; i < n; i++)

{

if (arr[i] == val)

{

return i;

}

}

return -1;

}

int recursion(int arr[], int l, int r, int val)

{

if (r < l)

return -1;

if (arr[l] == val)

return l;

if (arr[r] == val)

return r;

return recursion(arr, l + 1, r - 1, val);

}

int main(int argc, char const *argv[])

{

int arr[] = {1, 2, 3, 4, 5, 6, 7, 8}, val, n = 8, x, i;

int index1, index2;

time_t start, end;

start = time(NULL);

printf("\n Elements in an array: \n");

for (i = 0; i < n; i++)

{

printf("%d\t", arr[i]);

}

do

{

printf("\n ++++Types Of Searching++++");

printf("\n 1.Iteration Search");

printf("\n 2.Recursion Search");

printf("\n 3.Exit");

printf("\n Enter your choice: ");

scanf("%d", &x);

Page 2 of 9

switch (x)

{

case 1:

printf("\n Enter the value to search : ");

scanf("%d", &val);

index1 = iteration(arr, n, val);

if (index1 != -1)

printf("\n Element %d is present at index %d", val, index1);

else

printf("\n Element %d is not present", val);

break;

case 2:

printf("\n Enter the value to search : ");

scanf("%d", &val);

index2 = recursion(arr, 0, n - 1, val);

if (index2 != -1)

printf("\n Element %d is present at index %d", val, index2);

else

printf("\n Element %d is not present", val);

break;

case 3:

exit(0);

break;

}

end = time(NULL);

printf("\n Time taken by the program is %.3f seconds \n", difftime(end, start));

} while (1);

return 0;

}

OUTPUT:

Page 3 of 9

Q2. Write a Program to perform Binary Search using both iteration and recursion method.

SOURCE CODE:

//Binary Search

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int iteration(int arr[], int n, int val)

{

int l = 0, r = n;

while (l <= r)

{

int m = (l + r) / 2;

if (arr[m] == val)

return m;

else if (arr[m] < val)

l = m + 1;

else

r = m - 1;

}

return -1;

}

int recursion(int arr[], int l, int r, int val)

{

if (r >= l)

{

int mid = (l + r) / 2;

if (arr[mid] == val)

return mid;

else if (arr[mid] > val)

return recursion(arr, l, mid - 1, val);

return recursion(arr, mid + 1, r, val);

}

}

int main(int argc, char const *argv[])

{

int arr[] = {1, 2, 3, 4, 5, 6, 7, 8}, val, n = 8, x, i;

int index1, index2;

time_t start, end;

start = time(NULL);

printf("\n Elements in an array: \n");

for (i = 0; i < n; i++)

{

printf("%d\t", arr[i]);