Search in a Rotated Array Java
- Get link
- X
- Other Apps
PROGRAM TO SEARCH AN ELEMENT IN A SORTED AND ROTATED ARRAY
class
Main {
// Returns index of key in arr[l..h]
// if key is present, otherwise returns -1
static
int
search(
int
arr[],
int
l,
int
h,
int
key)
{
if
(l > h)
return
-
1
;
int
mid = (l + h) /
2
;
if
(arr[mid] == key)
return
mid;
/* If arr[l...mid] first subarray is sorted */
if
(arr[l] <= arr[mid]) {
/* As this subarray is sorted, we
can quickly check if key lies in
half or other half */
if
(key >= arr[l] && key <= arr[mid])
return
search(arr, l, mid -
1
, key);
/*If key not lies in first half subarray,
Divide other half into two subarrays,
such that we can quickly check if key lies
in other half */
return
search(arr, mid +
1
, h, key);
}
/* If arr[l..mid] first subarray is not sorted,
then arr[mid... h] must be sorted subarry*/
if
(key >= arr[mid] && key <= arr[h])
return
search(arr, mid +
1
, h, key);
return
search(arr, l, mid -
1
, key);
}
// main function
public
static
void
main(String args[])
{
int
arr[] = {
4
,
5
,
6
,
7
,
8
,
9
,
1
,
2
,
3
};
int
n = arr.length;
int
key =
6
;
int
i = search(arr,
0
, n -
1
, key);
if
(i != -
1
)
System.out.println(
"Index: "
+ i);
else
System.out.println(
"Key not found"
);
}
}
OUTPUT
Index: 2
- Get link
- X
- Other Apps
Comments
Post a Comment