好了,所以我給出的函數二進制搜索遞歸算法問題在C
int bin(int value, int size, int array[])
我應該內「[]數組」找到「價值」,但手頭這裏的問題是,在大多數情況下,我們沿着
int bin(int value, int max, int min, int array[])
遞歸線的東西,從邏輯上講,是這部分容易得多由於我還可以通過我在,數量以及記憶的大小陣列。
int bin(int array[], int value, int min, int max)
{
if(max < min)
return -1;
else
{
int mid = min + (max - min)/2;
if(array[mid] > value)
return bin(array, value, min, mid-1);
else if(array[mid] < value)
return bin(array, value, mid+1, max);
else
return mid;
}
但是由於我只能傳遞1個整數,我該如何調整這個算法呢? 實質上,我只能做這樣的事情,但我知道它不會在邏輯上起作用。有沒有辦法,我可以看到數組的大小?我試過了,但是這些數字並沒有被正確處理。
int bin(int array[], int value, int size)
{
int mid = size/2;
if(array[mid] > value)
return bin(array, value, size-(size/2));
else if(array[mid] < value)
return bin(array, value, size+(size/2));
else
return mid;
}
請調整您的「家庭作業」標籤等;你的約束肯定聽起來像那樣。提示:在C數組中實際上是指向底層數據類型的指針。所以你可以傳遞一個計算的參數'數組'到函數中。 – Adriaan 2012-08-13 11:55:59
@Adriaan:陣列不是指針。數組是數組。但是,不能將數組作爲函數參數傳遞,並且在該上下文中,數組會衰減爲指向第一個元素的指針。不過,這並沒有改變數組的性質。 – 2012-08-13 12:00:53