二分法查找
今天講一下“二分法查找”,二分法查找思路就是在一段順序數組中,每次和某一段數組中間數比大小。二分法查找的缺點是數組必須是順序的(我以由小到大排序資料為例),優點是查詢效率極高,時間複雜度是log2n。這種查找方式越是在大數據下,效果越明顯。以下附上原始碼和單元測試,原始碼包含兩種演算法,一種是循環一種是遞歸,大家多參考:
原始碼:
///
/// 利用二分法找出一個資料所在問題位置。 (遞歸方法)
/// 陣列必須是從小到大排序的,如果是未排序資料可使用
/////> cref="Sort"IntionSort="Sort"排序。
/// 如果要尋找的值在陣列中不存在,則回傳-1。
///
/// 陣列
/// 想要的值 returns>回傳第幾個,若要尋找的數值在陣列中不存在,回傳-1
public static int Search(int[] array, int value)
{ullif{ h throw new ArgumentException("array is null"); }
if (array[array.Length - 1] == value) { return array.Length - 1; }
return Search(array, 0, array.Length - 1, value);
}
private static int Search(int[] array, int beginIndex, int endIndex, int value) 含x + endIndex) / 2;
if (endIndex == beginIndex)
{ return array[beginIndex] == value ? beginIndex : -1; }
else if (endIndex == beginIndex + 1) [beginIndex] == value) { return beginIndex; }
else if (array[endIndex ] == value) { return beginIndex; }
else { return -1; }
}🠦. { return middle; }
else if (array[middle] > value)
{ return Search(array, beginIndex, middle, value); }
else if (array[middle] 可能 return -1;
}
// /
/// 使用二分法找出一個資料所在問題位置。 (循環方法)
/// 陣列必須是從小到大排序的,如果是未排序資料可使用
///// 類型 cref="Sort"排序。
/// 如果要尋找的值在陣列中不存在,則回傳-1。
///
/// 陣列
/// 想要的值 returns>傳回第幾個,要找出的值在陣列中不存在,回傳-1
public static int Search2(int[] array, int value)
int endIndex = array.Length - 1;
while (true)
{
{
{
if (value == array[beginIndex]) { return beginIndex endIndex]) { return endIndex; }
{ return -1; }
iddle endIndex) / 2;
if (value if (value == array[middle]) { return middle; }
if (value > array[middle]) { beginIndex = middle; }
}
}
單元測試:
[TestMethod()]
ode public void SearchTest()
{
隨機 random = new Random();
new int[100];
for (int i = 0; i {
}
int[] array3 = BitmapSort.Sort( array2 );
for (int i = 0; i {
{
), i);
As sert.Are等於(BinarySearch.Search2 ( array3, array3[i]), i);
}
Assert.AreEqual(BinarySearch.Search(array3, 999), - reEqual(BinarySearch.Search2(array3, 9999), -1);
}
更多二分法介紹文章查找相關文章請關注PHP中文網!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Atom編輯器mac版下載
最受歡迎的的開源編輯器