改寫二分搜尋演算法

2021-08-13 16:39:35 字數 1017 閱讀 3770

1. 實踐題目

7-2 改寫二分搜尋演算法

2. 問題描述

3. 演算法描述(不能貼上程式)

在基本的二分查詢裡面做改進,滿足題目要求。一開始我是對越底界,越高界,直接找得到,以及在兩者之間四個情況分開來寫,但是覺得這種方法不好。後來改進的話就直接對low和high兩個指標進行操作。在二分迴圈while(low <= high ),當low==high 的時候,此時為直接找得到。當low>=high時,此時就是剩下來的三種情況(越底界,越高界,在兩者之間):

當越底界時,low>high,此時不滿足迴圈條件,low=-1,high=0,直接輸出

當越高界時,low>high,此時不滿足迴圈條件,low=arr.length+1,high = arr.length,直接輸出

4. 演算法時間及空間複雜度分析(要有分析過程)

空間複雜度o(1)。中間借用輔助空間來儲存資料,表示所需空間為常量,並且與n無關。

5. 程式執行截圖

6.心得體會(對本次實踐收穫及疑惑進行總結)

收穫:覺得二分查詢可以充分利用好頭指標尾指標這兩個要素,可以使**變得更加精煉。不明白的點可以畫圖自己推下。此次用的是迭代的二分法,找相鄰兩個點的這個修改也可以重新呼叫一次二分法,充分利用好迭代的本質。

改寫二分搜尋演算法

一 實踐題目 改寫二分搜尋演算法 二 問題描述 設a 0 n 1 是已排好序的陣列,請改寫二分搜尋演算法,使得當x不在陣列中時,返回小於x的最大元素位置i和大於x的最小元素位置j。當搜尋元素在陣列中時,i和j相同,均為x在陣列中的位置。輸入格式 輸入有兩行 第一行是n值和x值 第二行是n個不相同的整...

改寫二分搜尋演算法

設a 0 n 1 是已排好序的陣列,請改寫二分搜尋演算法,使得當x不在陣列中時,返回小於x的最大元素位置i和大於x的最小元素位置j。當搜尋元素在陣列中時,i和j相同,均為x在陣列中的位置。輸入格式 輸入有兩行 第一行是n值和x值 第二行是n個不相同的整數組成的非降序序列,每個整數之間以空格分隔。輸入...

改寫二分搜尋演算法

設a 0 n 1 是已排好序的陣列,請改寫二分搜尋演算法,使得當x不在陣列中時,返回小於x的最大元素位置i和大於x的最小元素位置j。當搜尋元素在陣列中時,i和j相同,均為x在陣列中的位置。輸入有兩行 第一行是n值和x值 第二行是n個不相同的整數組成的非降序序列,每個整數之間以空格分隔。在這裡給出一組...