Here is program i wrote

#include <stdio.h>

#include <iostream>

using namespace std;

void rotateArray( int *a , int size, int rotation)

{

int len = size;

if (len < rotation ) return;

int *temp = new int [rotation];

int i = 0;

int temp_index = 0;

for ( i = len-rotation; i < len;i++)

temp[temp_index++] = a[i];

for ( i = len-rotation -1; i>=0; i--)

a[i+rotation] = a[i];

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

a[i] = temp[i];

delete temp;

}

void search( int *a, int size, int number)

{

int low = 0;

int high = size -1;

while (low <= high)

{

int mid = low+(high - low)/2;

if ( number == a[mid] )

{

cout<<"Got number @"<<mid<<endl;

return;

}

if ( a[low] < a[mid]) //Lower part sorted

{

if ( a[mid] > number && a[low] <= number )

high = mid-1;

else

low = mid+1;

}

else //Upper part sorted

{

if ( a[mid] < number && a[high] >= number )

low = mid+1;

else

high = mid-1;

}

}

cout<<"Number is not present in array"<<endl;

}

void printArray ( int *a, int size)

{

for ( int i = 0; i < size;i++)

cout <<a[i]<<" ";

cout<<endl;

}

int main()

{

int arr[] = { 1, 2,3,4,5,6,7,8,9 };

int size = sizeof(arr)/sizeof(arr[0]);

rotateArray(arr, size, 3);

printArray(arr, size);

search(arr, size, 8);

return 0;

}

#include <stdio.h>

#include <iostream>

using namespace std;

void rotateArray( int *a , int size, int rotation)

{

int len = size;

if (len < rotation ) return;

int *temp = new int [rotation];

int i = 0;

int temp_index = 0;

for ( i = len-rotation; i < len;i++)

temp[temp_index++] = a[i];

for ( i = len-rotation -1; i>=0; i--)

a[i+rotation] = a[i];

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

a[i] = temp[i];

delete temp;

}

void search( int *a, int size, int number)

{

int low = 0;

int high = size -1;

while (low <= high)

{

int mid = low+(high - low)/2;

if ( number == a[mid] )

{

cout<<"Got number @"<<mid<<endl;

return;

}

if ( a[low] < a[mid]) //Lower part sorted

{

if ( a[mid] > number && a[low] <= number )

high = mid-1;

else

low = mid+1;

}

else //Upper part sorted

{

if ( a[mid] < number && a[high] >= number )

low = mid+1;

else

high = mid-1;

}

}

cout<<"Number is not present in array"<<endl;

}

void printArray ( int *a, int size)

{

for ( int i = 0; i < size;i++)

cout <<a[i]<<" ";

cout<<endl;

}

int main()

{

int arr[] = { 1, 2,3,4,5,6,7,8,9 };

int size = sizeof(arr)/sizeof(arr[0]);

rotateArray(arr, size, 3);

printArray(arr, size);

search(arr, size, 8);

return 0;

}