在C#中實現二分查找時,可以考慮以下幾點進行代碼優化:
使用整數類型表示索引:由于數組索引是整數,因此在計算中間索引時使用整數類型可以避免不必要的類型轉換。
避免使用遞歸:遞歸實現的二分查找可能會導致棧溢出,特別是在處理大數據集時。使用迭代實現可以避免這個問題。
減少計算次數:在計算中間索引時,可以使用 mid = low + (high - low) / 2
而不是 mid = (low + high) / 2
,這樣可以避免整數溢出的問題。
使用邊界檢查:在更新邊界時,確保不會出現死循環。例如,當 low< high
時,應該將 high
更新為 mid
而不是 mid - 1
。
返回有效信息:當找到目標值時,返回其索引;當未找到目標值時,返回一個表示失敗的值(例如 -1)。
下面是一個優化后的二分查找實現:
public static int BinarySearch(int[] arr, int target)
{
int low = 0;
int high = arr.Length - 1;
while (low <= high)
{
int mid = low + (high - low) / 2;
if (arr[mid] == target)
{
return mid;
}
else if (arr[mid]< target)
{
low = mid + 1;
}
else
{
high = mid - 1;
}
}
return -1; // 表示未找到目標值
}
這個實現遵循了上述建議,可以在C#中高效地執行二分查找。