二分查詢(遞迴與非遞迴方式)

2021-06-28 01:54:37 字數 900 閱讀 2525

@test

public void testbinarysearch() ;

// 非遞迴實現,返回對應的序號

system.out.println(binarysearch(arr, 5));

// 遞迴實現,返回對應的序號

system.out.println(binsearch(arr, 5));

} /**

* 非遞迴實現,返回對應的序號

* * @author: kpchen

* @createtime: 2023年1月6日 下午8:21:55

* @history:

* @param arr

* 陣列

* @param key

* 查詢數

* @return int 返回位置

*/int binarysearch(int arr, int key)

int low = 0;

int high = arr.length - 1;

while (low <= high) else if (key < arr[mid]) else

} return -1;

} /*

* 遞迴實現,返回對應的序號

*/int bsearch(int arr, int low, int high, int key)

int mid = (low + high) >> 1;

if (arr[mid] == key) else if (arr[mid] > key) else

} /*

* 將遞迴實現的方法封裝起來

*/int binsearch(int arr, int key)

二分查詢 遞迴與非遞迴

最近做了一道題目,在弄清原理之後發現怎麼也過不去,找了幾個小時的bug,結果問題就出現在二分查詢的知識點上,暑假是有接觸過二分的題目,應該是沒有完全理解才會在昨天的那道題上碰釘子,藉此寫一下對二分的理解來鞏固鞏固以前的知識。一談起查詢,最先想到的無非是遍歷整組資料,複雜度為o n 但是對於一組有規律...

二分查詢 非遞迴方式

首先我們要清楚使用我們的二分查詢演算法的前提條件 二分查詢法只適用於從有序的數列中進行查詢 比如數字和字母等 將數列排序後再進行查詢 二分查詢的思路 二分查詢會用到遞迴的思想,當然也有非遞迴的方式,我是分開來學習了 1.首先確定陣列的中間下標mid mid left right 2 2.讓需要查詢的...

二分查詢(遞迴 非遞迴)

二分查詢是一種查詢效率非常高的查詢演算法。又稱折半查詢。起初在資料結構中學習遞迴時實現二分查詢,實際上不用遞迴也可以實現,畢竟遞迴是需要開闢額外的空間的來輔助查詢。本文就介紹兩種方法 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。使用條件 查詢序...