binary search by recursion

#include <stdio.h>
#include <stdlib.h>
#define Max_size 10
int BinarySearchingRecursion(int arr[],int data,int low,int high);
void sortingInGeneral(int ptr[],int n);
void DisplayArray(int p[],int n);
void InsertingElement(int arr[],int data,int *Last_element,int max_size);
int main()
{    int a[Max_size]={21,23,1,2,34,10};
     int data;
     int element=-1;


    int choice;
    while(1)
    {
       printf("1]Inserting\n");
       printf("2]Searching element\n");
       printf("3]Display list\n");
       printf("0]Stop\n");
       printf("Enter choice:");
       scanf("%d",&choice);

       if(choice<=0)
       {
           break;
       }
       else
       {
           switch(choice)
           {
           case 1:
            {
              int data;
              printf("Enter data to insert:");
              scanf("%d",&data);
              InsertingElement(a,data,&element,Max_size);
              break;
            }
           case 2:
            {
                sortingInGeneral(a,element);
                printf("Enter data to search in given array:");
                scanf("%d",&data);
                if(BinarySearchingRecursion(a,data,0,element)==-1)
                 {
                 printf("Enter element is not present in array list\n");
                 }
                else
                {
                 printf("Data is found at position:%d\n",BinarySearchingRecursion(a,data,0,element)+1);
                }
                break;
             }
           case 3:
            {

                DisplayArray(a,element);
                break;
            }
           default:
            {
                printf("\nChoice is wrong\n");
            }
           }
       }
    }



    return 0;
}
int  BinarySearchingRecursion(int arr[],int data,int low,int high)
{
    int mid;
    if(low==high)
    {
        if(data==arr[low])
        {
            return low;
        }
        else
        {

            return -1;
        }
    }
    else
    {
        mid=(low+high)/2;
        if(arr[mid]==data)
        {
            return mid;
        }
        else if(data<arr[mid])
        {
            return BinarySearchingRecursion(arr,data,low,mid-1);
        }
        else
        {
            return BinarySearchingRecursion(arr,data,mid+1,high);
        }
    }

}
void sortingInGeneral(int ptr[],int n)
{
    int tem;
    for(int i=0;i<n;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            if(ptr[i]>ptr[j])
            {
                tem=ptr[i];
                ptr[i]=ptr[j];
                ptr[j]=tem;
            }
        }
    }
}
void InsertingElement(int arr[],int data,int *Last_element,int max_size)
{
    if(*(Last_element)==max_size)
    {
        printf("List is full\n");
    }
    else
    {
        *Last_element=*Last_element+1;
        arr[*(Last_element)]=data;
    }
}
void DisplayArray(int p[],int n)
{
    if(n==-1)
    {
        printf("List is empty\n");
    }
    else{
    for(int i=0;i<n;i++)
    {
        printf("%d ",p[i]);
    }
    printf("\n");
    }
}


Post a Comment

0 Comments