Thursday, 29 October 2015

Recursive C program to linearly search an element in a given array

Given an unsorted array and an element x, search x in given array. Write recursive C code for this. If element is not present, return -1.
The idea is to compare x with first element in arr[]. If element is found at first position, return it. Else recur for remaining array and x.
#include<stdio.h>
 
/* Recursive function to search x in arr[l..r] */
int recSearch(int arr[], int l, int r, int x)
{
     if (r < l)
        return -1;
     if (arr[l] == x)
        return l;
     return recSearch(arr, l+1, r, x);
}
 
int main()
{
    int arr[] = {12, 34, 54, 2, 3}, i;
    int n = sizeof(arr)/sizeof(arr[0]);
    int x = 3;
    int index = recSearch(arr, 0, n-1, x);
    if (index != -1)
       printf("Element %d is present at index %d", x, index);
    else
        printf("Element %d is not present", x);
    return 0;
}
Output:
Element 3 is present at index 4
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

C program to find largest element in an array

Given an array, find the largest element in it.
The solution is to initialize max as first element, then traverse the given array from second element till end. For every traversed element, compare it with max, if it is greater than max, then update max.
#include <stdio.h>
 
// C function to find maximum in arr[] of size n
int largest(int arr[], int n)
{
    int i;
    
    // Initialize maximum element
    int max = arr[0];
 
    // Traverse array elements from second and
    // compare every element with current max 
    for (i = 1; i < n; i++)
        if (arr[i] > max)
            max = arr[i];
 
    return max;
}
 
int main()
{
    int arr[] = {10, 324, 45, 90, 9808};
    int n = sizeof(arr)/sizeof(arr[0]);
    printf("Largest in given array is %d", largest(arr, n));
    return 0;
}
Output:
Largest in given array is 9808
Time complexity of the above solution is \Theta(n).
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above