Skip to content

Commit db7e87e

Browse files
Merge pull request codemistic#579 from RR190701/main
Added Binary Search in Rotated array
2 parents 39a39fa + 9496d73 commit db7e87e

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
4+
int FoundPivot(int arr[],int l,int r){
5+
if(l<=r){
6+
int mid = l + (r-l)/2;
7+
8+
if(mid<r && arr[mid]>arr[mid+1])
9+
return mid;
10+
else if(mid > l && arr[mid] < arr[mid-1])
11+
return mid-1;
12+
13+
if(arr[mid] >= arr[r])
14+
return FoundPivot(arr, mid+1, r);
15+
16+
else
17+
return FoundPivot(arr, l, mid-1);
18+
19+
}
20+
return -1;
21+
}
22+
int binarySearch(int arr[], int l, int r, int target){
23+
if(l>r)return -1;
24+
25+
int mid = l + (r-l)/2;
26+
27+
if(arr[mid] > target){
28+
return binarySearch(arr,l, mid-1, target);
29+
}
30+
else if(arr[mid] < target){
31+
return binarySearch(arr, mid+1, r, target);
32+
}
33+
return mid;
34+
}
35+
36+
void searchElementInRotatedArray(int arr[], int target,int n){
37+
int pivot = FoundPivot(arr,0, n-1);
38+
39+
if(pivot == -1)return;
40+
41+
int found = binarySearch(arr, 0, pivot, target);
42+
43+
if(found == -1){
44+
found = binarySearch(arr, pivot+1, n-1, target);
45+
}
46+
if(found == -1){
47+
cout<<"NOT PRESENT !!";
48+
return;
49+
}
50+
cout<<"FOUND AT :"<<found;
51+
}
52+
53+
int main(){
54+
int arr[] = {110,130,140,170,10,20,30,50,60,80};
55+
int n = sizeof(arr)/sizeof(arr[0]);
56+
int target = 30;
57+
searchElementInRotatedArray(arr, target,n);
58+
59+
60+
}

0 commit comments

Comments
 (0)