Skip to content

BinarySearch.cpp

#include <stdio.h>
#include <stdlib.h>

void bubbleSort(int arr[], int n)
{
    int i, j, temp;

    for (i = 0; i < n - 1; i++)
    {
        for (j = 0; j < n - i - 1; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

void printArray(int arr[], int size)
{
    for (int i = 0; i < size; i++)
        printf("%d ", arr[i]);
    printf("\n");
}

int iterationBinarySearch(int arr[], int x, int low, int high)
{
    while (low <= high)
    {
        int mid = low + (high - low) / 2;

        if (arr[mid] == x)
        {
            return mid;
        }
        else if (arr[mid] < x)
        {
            low = mid + 1;
        }
        else
        {
            high = mid - 1;
        }
    }
    return -1;
}

int recursionBinarySearch(int arr[], int x, int low, int high)
{
    if (low <= high)
    {
        int mid = low + (high - low) / 2;

        if (arr[mid] == x)
        {
            return mid;
        }

        if (arr[mid] > x)
        {
            return recursionBinarySearch(arr, x, low, mid - 1);
        }
        else
        {
            return recursionBinarySearch(arr, x, mid + 1, high);
        }
    }
    return -1;
}

int main()
{
    int arr[100];
    int n;

    printf("Enter The Number Of Elements : ");
    scanf("%d", &n);

    for (int i = 0; i < n; i++)
    {
        printf("Enter The Element %d : ", i);
        scanf("%d", &arr[i]);
    }

    printf("\nEntered Array ~\n");
    printArray(arr, n);

    bubbleSort(arr, n);

    int result1;
    int result2;

    int toSearch;
    int choice;

    do
    {
        printf("\n\n*** Binary Search Menu ***\n");
        printf("1. Search With Iteration\n");
        printf("2. Search With Recursion\n");
        printf("3. Exit\n");

        printf("\nEnter The Element To Search : ");
        scanf("%d", &toSearch);

        printf("Enter Your Choice (1 - 3) : ");
        scanf("%d", &choice);

        switch (choice)
        {
        case 1:
            printf("Binary Search With Iteration ~\n");

            result1 = iterationBinarySearch(arr, toSearch, 0, n - 1);

            if (result1 == -1)
            {
                printf("Element Not Found In The Array!\n");
            }
            else
            {
                printf("Element Found At Index %d\n", result1);
            }
            break;

        case 2:
            printf("Binary Search With Recursion ~\n");

            result2 = recursionBinarySearch(arr, toSearch, 0, n - 1);

            if (result2 == -1)
            {
                printf("Element Not Found In The Array!\n");
            }
            else
            {
                printf("Element Found At Index %d\n", result2);
            }
            break;

        case 3:
            printf("Exiting Program\n");
            exit(0);

        default:
            printf("Invalid Choice\n");
            break;
        }
    } while (choice != 3);

    return 0;
}