在排序和旋转数组中查找枢轴元素

时间:2019-04-19 03:50:53

标签: arrays sorting rotation pivot

我正在尝试在排序和旋转数组中查找枢轴元素,该元素返回返回给定stackoverflow错误。

下面是代码:

int findPivot(int[] arr,int lo, int hi) {

    int mid = lo +(hi-lo)/2;

    if(arr[mid]>arr[mid+1]) {
        return mid;
    }
    else if (arr[mid]<arr[hi]) {
        return findPivot(arr,lo,mid-1);
    }else {
        return findPivot(arr,mid+1,hi);
    }

}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您缺少基本条件。

int findPivot(int arr[], int low, int high) 
{ 
  // base cases 
  if (high < low) return -1; 
  if (high == low) return low; 

  int mid = (low + high)/2; /*low + (high - low)/2;*/
  if (mid < high && arr[mid] > arr[mid + 1]) 
   return mid; 

  if (mid > low && arr[mid] < arr[mid - 1]) 
   return (mid-1); 

 if (arr[low] >= arr[mid]) 
  return findPivot(arr, low, mid-1); 

 return findPivot(arr, mid + 1, high); 
}