卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

如何在旋轉(zhuǎn)排序數(shù)組中搜索目標(biāo)值

Java的二分查找算法可以在約束時間復(fù)雜度為O(logn)的情況下,快速地在有序數(shù)組中搜索目標(biāo)值。本篇經(jīng)驗將介紹如何利用二分查找算法,在一個旋轉(zhuǎn)升序排序的數(shù)組中搜索目標(biāo)值。獲取旋轉(zhuǎn)點首先,我們需要編寫

Java的二分查找算法可以在約束時間復(fù)雜度為O(logn)的情況下,快速地在有序數(shù)組中搜索目標(biāo)值。本篇經(jīng)驗將介紹如何利用二分查找算法,在一個旋轉(zhuǎn)升序排序的數(shù)組中搜索目標(biāo)值。

獲取旋轉(zhuǎn)點

首先,我們需要編寫一個函數(shù)來獲取旋轉(zhuǎn)點。旋轉(zhuǎn)點指的是從該索引值開始向后為一個升序數(shù)組,其前面所有值也為一個升序數(shù)組。下面是圖示代碼:

```java

private int findRotationPoint(int[] nums) {

int left 0;

int right nums.length - 1;

while (left < right) {

int mid left (right - left) / 2;

if (nums[mid] > nums[right]) {

left mid 1;

} else {

right mid;

}

}

return left;

}

```

在有序區(qū)間內(nèi)搜索目標(biāo)值

接下來,我們編寫另一個函數(shù),用于在一個有序區(qū)間內(nèi)通過二分查找獲取目標(biāo)值的索引位置。如果數(shù)組中不存在目標(biāo)值,則返回-1。下面是相應(yīng)的代碼:

```java

private int searchInSortedRange(int[] nums, int target, int left, int right) {

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;

}

```

在旋轉(zhuǎn)排序數(shù)組中搜索目標(biāo)值

現(xiàn)在,我們可以編寫主函數(shù)來實現(xiàn)在一個旋轉(zhuǎn)排序的數(shù)組中搜索目標(biāo)值的功能。具體步驟如下:

1. 首先,利用上面的函數(shù)獲取旋轉(zhuǎn)點的索引位置。

2. 然后,根據(jù)旋轉(zhuǎn)點將數(shù)組分成兩個有序的區(qū)間。

3. 在這兩個區(qū)間中分別使用上面的函數(shù)來搜索目標(biāo)值的索引位置。

下面是相應(yīng)的代碼:

```java

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

int rotationPoint findRotationPoint(nums);

int index searchInSortedRange(nums, target, 0, rotationPoint - 1);

if (index ! -1) {

return index;

}

return searchInSortedRange(nums, target, rotationPoint, nums.length - 1);

}

```

編寫測試代碼

完成上述功能后,我們可以編寫測試代碼來驗證算法的正確性。具體代碼如下:

```java

public static void main(String[] args) {

Solution solution new Solution();

int[] nums {4, 5, 6, 7, 0, 1, 2};

int target 0;

int index (nums, target);

("目標(biāo)值 " target " 的索引位置是:" index);

}

```

運行測試代碼

現(xiàn)在,我們可以運行測試代碼,并觀察控制臺輸出結(jié)果。如果輸出符合預(yù)期,表示本地測試通過。

提交算法

最后,我們可以將代碼提交到相應(yīng)的平臺進行測試。如果測試通過,說明我們成功地在旋轉(zhuǎn)排序數(shù)組中搜索到了目標(biāo)值。

標(biāo)簽: