/*
* recursive binary search - by chimomo
* * [折半查詢的前提]:
* 1、待查詢序列必須採用順序儲存結構。
* 2、待查詢序列必須是按關鍵字大小有序排列。
* * 時間複雜度:o(log2n)
*/ namespace recursivebinarysearch
; console.writeline(binarysearch(a, 6, 0, 9));
}/// /// 在下界為low,上界為high的有序陣列a中折半查詢資料元素x(遞迴查詢)。
///
/// /// 待查詢陣列。
///
/// /// 目標元素。
///
/// /// 陣列元素下標的下界。
///
/// /// 陣列元素下標的上界。
///
/// /// 若查詢到目標元素則返回該目標元素在陣列中的下標;否則返回-1。
///
private static int binarysearch(int arr, int x, int low, int high)
int mid = (low + high) / 2;
if (x == arr[mid])
return x < arr[mid] ? binarysearch(arr, x, low, mid - 1) : binarysearch(arr, x, mid + 1, high);
}}}
// output:/*5
*/
/*
* non-recursive binary search - by chimomo
* * [折半查詢的前提]:
* 1、待查詢序列必須採用順序儲存結構。
* 2、待查詢序列必須是按關鍵字大小有序排列。
* * 時間複雜度:o(log2n)
*/ namespace nonrecursivebinarysearch
; console.writeline(binarysearch(a, 6, 9));
}/// /// 在長度為n的有序陣列arr中查詢值為x的元素(非遞迴查詢)。
///
/// /// 待查詢陣列。
///
/// /// 目標元素。
///
/// /// 陣列長度。
///
/// /// 若查詢到目標元素則返回該目標元素在陣列中的下標;否則返回-1。
///
private static int binarysearch(int arr, int x, int n)
if (arr[mid] < x)
else
}return -1;
}}}
// output:/*5
*/
c 折半查詢演算法
何謂折半查詢,舉個例子很快就可以明白,給你了9個數 1 2 3 4 5 6 7 8 9 讓你去找2在 這時候你肯定會說這太簡單了,但是計算機就沒那麼強了,它得拿著2和這9個數乙個乙個的比較,2在前面還好比較的次數比較小,但是如果讓你找6在哪呢,需要比較的次數就多了,可能你覺得多這一次兩次沒什麼差別,...
查詢演算法 折半查詢演算法
折半查詢演算法 binary search param a 乙個有序的集合 本次為由小到大 param x 需要查詢的值 ps 首先使用折半演算法的時候 集合必須是有序的 eg a 1,3,5,7,9 x 3 a mid low height 1,3,5,7,9 2 0 1 1,3 0 1 1 3 ...
查詢演算法 折半查詢
本小節知識點 1.掌握 基本思路 2.掌握 實現步驟 3.了解 練習 1.基本思路 在有序表中,取中間元素作為比較物件,若給定值與中間元素的要查詢的數相等,則查詢成功 若給定值小於中間元素的要查詢的數,則在中間元素的左半區繼續查詢 若給定值大於中間元素的要查詢的數,則在中間元素的右半區繼續查詢。不斷...