diff --git a/algorithms/CPlusPlus/Searching/rotated-binary-search.cpp b/algorithms/CPlusPlus/Searching/rotated-binary-search.cpp new file mode 100644 index 00000000..69387596 --- /dev/null +++ b/algorithms/CPlusPlus/Searching/rotated-binary-search.cpp @@ -0,0 +1,43 @@ +// You are given a sorted array of distinct integers. +// However, the array has been rotated an unknown number of times in a clockwise direction. +// Your task is to find the smallest element in the rotated array using the binary search algorithm. + +// Write a function findSmallestElement that takes in an array of integers, nums, and its size, n, as parameters. +// The function should return the smallest element in the rotated array. + +// Note: + +// The array nums is rotated in a clockwise direction, which means that some elements from the beginning of the original +// sorted array have been moved to the end in an unknown pattern. +// The array does not contain any duplicate elements. + + + +// C++ program to implement binary search on an array of integers, rotated an unknown number of times. +#include +using namespace std; +//Binary search function. It returns the smallest element in the rotated array. +int findSmallestElement(int nums[], int n) { + int low = 0; + int high = n - 1; + + while (low < high) { + int mid = low + (high - low) / 2; + + if (nums[mid] > nums[high]) { + low = mid + 1; + } else { + high = mid; + } + } + + return nums[low]; +} + +int main() { + int nums[] = {5, 6, 8, 9, 10, 2, 3, 4}; + int n = sizeof(nums) / sizeof(nums[0]); + int smallest = findSmallestElement(nums, n); + cout << "The smallest element in the rotated array is: " << smallest << endl; + return 0; +}