Pseudo code for searching pivot index in sorted rotated array?
private int FindPivotIndex(int[] nums)
{
int low = 0;
int pivotIndex = 0;
int high = nums.Length - 1;
//array is sorted already
if (nums[low] < nums[high])
return 0;
while (low < high)
{
pivotIndex = low + ((high - low) / 2);
//! pivot element is one having left element and right element less than it.
//! Comparing only on the right side is enough
if (nums[pivotIndex] > nums[pivotIndex + 1])
{
return pivotIndex;
}
// !Pivot element always present in the non uniformly increasing part
//! if first element is less than pivot index element than it means its strictly increasing
//! we need to search on right side as its non uniformly increasing part
else if (nums[low] < nums[pivotIndex])
{
low = pivotIndex + 1;
}
else
{
//! why pivotIndex and why not pivotIndex-1?
//!because element at pivot index can also be the part of the non uniformly increasing
high = pivotIndex;
}
}
return pivotIndex;}
Implement int sqrt(int x).
public int MySqrt(int x) {
if (x < 2) return x;
int l = 2;
int r = x / 2;
while (l <= r)
{
int mid = l + ((r - l) / 2);
long num = (long)mid * mid; if (num > x)
{
r = mid - 1;
}
else if (num < x)
{
l = mid + 1;
}
else
{
return mid;
}
}
return r;
}What is the inflection point in sorted/rotated array?
https://medium.com/spotthedifference/search-in-a-rotated-sorted-array-72c12bcb212
The point which divides the array into two parts can be seen as a point of change, hence let’s call this point as inflection point.
what is the pivot element in an array?
http://theoryofprogramming.com/2017/12/16/find-pivot-element-sorted-rotated-array/
The pivot element is basically, the largest element in an array. For a sorted and rotated array, it might be somewhere in between
Given sorted array .How to find out how many times array has been rotated ?
http://theoryofprogramming.com/2017/12/16/find-pivot-element-sorted-rotated-array/
The number of times the array is rotated would be (IndexOfPivotReturned + 1).