所以我想爲我的C++類做一個二進制排序算法,但是當我的二進制搜索函數運行時,我不斷收到分段錯誤。無論我和我的室友有多難看,我們都找不到這個問題。任何幫助將不勝感激。C++中的二進制搜索:升序+降序排列陣列
int binarySearch(int arr[], int k, int first, int last)
{
if(arr[first] <= arr[last])
{
int mid = (first + last)/2;
if(k == arr[mid])
{
return mid;
}
else if (k < arr[mid])
{
return binarySearch(arr, k, first, mid-1);
}
else return binarySearch(arr, k, mid+1, last);
}
else if(arr[first] >= arr[last])
{
int mid = (first + last)/2;
if(k == arr[mid])
{
return mid;
}
else if (k < arr[mid])
{
return binarySearch(arr, k, mid+1, last);
}
else return binarySearch(arr, k, first, mid-1);
}
else return -1;
}
固定分割故障後,我注意到,因爲該計劃持續輸出,關鍵是無法即使它存在數組中可以找到我的某處必定有一個錯誤在我的邏輯。
看看http://mycodinglab.com/binary-search-algorithm-c/並與你所做的比較。 –
是的,他們確實做到了。我仍然結束了一些邏輯錯誤,但我認爲這更多的是我的問題哈哈。 –