成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

Java實(shí)現(xiàn)二分查找算法

算法原理給定一個(gè)n個(gè)元素有序的(升序)整型數(shù)組nums和一個(gè)目標(biāo)值target,二分查找算法通過(guò)不斷將待查找區(qū)間縮小一半的方式來(lái)搜索nums中的target。如果目標(biāo)值存在則返回下標(biāo),否則返回-1。

算法原理

給定一個(gè)n個(gè)元素有序的(升序)整型數(shù)組nums和一個(gè)目標(biāo)值target,二分查找算法通過(guò)不斷將待查找區(qū)間縮小一半的方式來(lái)搜索nums中的target。如果目標(biāo)值存在則返回下標(biāo),否則返回-1。

實(shí)現(xiàn)二分查找算法

二分查找算法是一種高效的搜索算法,其基本思想是每次取待查找區(qū)間的中間元素與目標(biāo)值進(jìn)行比較,然后根據(jù)比較結(jié)果確定繼續(xù)在左區(qū)間或右區(qū)間搜索,如此循環(huán)直至找到目標(biāo)值或確定目標(biāo)值不存在。

```java

public int binarySearch(int[] nums, int target) {

int left 0;

int right nums.length - 1;

while (left < right) {

int mid left (right - left) / 2;

if (nums[mid] target) {

return mid;

} else if (nums[mid] < target) {

left mid 1;

} else {

right mid - 1;

}

}

return -1;

}

```

編寫(xiě)本地測(cè)試方法

為了驗(yàn)證二分查找算法的正確性,我們可以編寫(xiě)一個(gè)簡(jiǎn)單的本地測(cè)試方法來(lái)對(duì)算法進(jìn)行驗(yàn)證。在測(cè)試方法中構(gòu)造不同的有序整型數(shù)組和目標(biāo)值,調(diào)用二分查找算法進(jìn)行搜索,并輸出結(jié)果到控制臺(tái)。

```java

public void testBinarySearch() {

int[] nums {1, 3, 5, 7, 9};

int target 5;

int result binarySearch(nums, target);

("Target found at index: " result);

}

```

運(yùn)行測(cè)試方法

運(yùn)行測(cè)試方法,觀察控制臺(tái)輸出結(jié)果。如果輸出結(jié)果符合預(yù)期,即目標(biāo)值的下標(biāo)為2,則說(shuō)明本地測(cè)試通過(guò),二分查找算法實(shí)現(xiàn)正確。

平臺(tái)提交算法

經(jīng)過(guò)本地測(cè)試驗(yàn)證算法的正確性后,可以將算法代碼提交到相應(yīng)的平臺(tái)進(jìn)行測(cè)試。確保算法在各種情況下都能正確工作并通過(guò)所有測(cè)試用例。

算法復(fù)雜度分析

二分查找算法的時(shí)間復(fù)雜度為O(logn),其中n為有序數(shù)組的長(zhǎng)度。由于算法只需要常數(shù)級(jí)別的額外空間來(lái)存儲(chǔ)幾個(gè)變量,因此空間復(fù)雜度為O(1)。

通過(guò)以上步驟,我們?cè)敿?xì)講解了Java如何實(shí)現(xiàn)二分查找算法,并介紹了如何進(jìn)行本地測(cè)試、運(yùn)行測(cè)試方法以及提交算法到平臺(tái)。同時(shí),對(duì)算法的復(fù)雜度進(jìn)行了分析,幫助讀者更好地理解和運(yùn)用這一經(jīng)典的搜索算法。

標(biāo)簽: