Advertisement
AbirAbrar

d. Updating the value of an element from a sorted array -

Dec 16th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.27 KB | None | 0 0
  1. #include<stdio.h>
  2.  
  3. int update(int A[], int n, int prevValue, int newValue);
  4.  
  5. int main()
  6. {
  7.     int i,n,arr[100],prevValue,newValue,getResult;
  8.  
  9.     printf("How Many Elements: \n");
  10.     scanf("%d",&n);
  11.  
  12.     for(i=0;i<n;i++)
  13.     {
  14.         scanf("%d",&arr[i]);
  15.     }
  16.     printf("Enter Previous & New Value: \n");
  17.     scanf("%d%d",&prevValue,&newValue);
  18.     getResult= update(arr,n,prevValue,newValue);
  19.  
  20.     if(getResult==-1)
  21.     {
  22.         printf("Update unsuccessful\n");
  23.     }
  24.     else
  25.     {
  26.         printf("Value update at position: %d\n",getResult);
  27.     }
  28.     return 0;
  29. }
  30.  
  31. int update(int A[], int n, int prevValue, int newValue)
  32. {
  33.     int startPoint,endPoint,loc,midPoint;
  34.     startPoint = 0; //first index of array
  35.     endPoint = n-1; //last index of array
  36.     loc = -1;
  37.  
  38.     while(startPoint <= endPoint)
  39.     {
  40.         midPoint = (startPoint+endPoint)/2;
  41.  
  42.         if(A[midPoint]==prevValue)
  43.         {
  44.             A[midPoint]=newValue;
  45.             loc = midPoint;
  46.             return loc;
  47.         }
  48.         else if(A[midPoint]<prevValue)
  49.         {
  50.            startPoint = midPoint + 1;
  51.         }
  52.  
  53.         else
  54.         {
  55.             endPoint = midPoint - 1;
  56.         }
  57.  
  58.  
  59.     }
  60.     if(startPoint>endPoint)
  61.     {
  62.         return -1;
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement