演算法 折半查詢(C )

2021-09-24 05:53:44 字數 1512 閱讀 8487

/*

* 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.基本思路 在有序表中,取中間元素作為比較物件,若給定值與中間元素的要查詢的數相等,則查詢成功 若給定值小於中間元素的要查詢的數,則在中間元素的左半區繼續查詢 若給定值大於中間元素的要查詢的數,則在中間元素的右半區繼續查詢。不斷...