二分查詢 非遞迴方式

2021-10-19 14:07:38 字數 1141 閱讀 5346

首先我們要清楚使用我們的二分查詢演算法的前提條件:

二分查詢法只適用於從有序的數列中進行查詢(比如數字和字母等),將數列排序後再進行查詢

二分查詢的思路

二分查詢會用到遞迴的思想,當然也有非遞迴的方式,我是分開來學習了

1.首先確定陣列的中間下標mid mid = (left+ right)/2

2.讓需要查詢的數findvalue和我們的arr[mid]比較

​ 如果findvalue>arr[mid],往右邊遞迴

​ 如果findvalue​ 如果正好找到就返回

那我們的遞迴出口(結束條件)是什麼

1.找到了,直接返回退出了

2.遞迴萬整個陣列,沒有找到findvalue,也需要結束遞迴時,當我們的left>right就代表要結束了

那我們的非遞迴方式是怎麼來查詢呢

非遞迴**

public

class

binnarysearchnorecur

;int index =

binnarysearch

(arr,11)

; system.out.

println

(index);}

/** //二分查詢的非遞迴實現

* @param arr 待查詢陣列 該陣列公升序

* @param target 待查詢的值

* @return 找到返回對應下標,沒找到返回-1

*/public

static

intbinnarysearch

(int

arr,

int target)

else

if(arr[mid]

> target)

else

}return-1

;}}

我們發現沒有以前的向左遞迴向右遞迴了,我們是通過了while迴圈來控制我們的方法一直在進行,動態改變我們的left和right的值,達到遞迴相同的效果

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

test public void testbinarysearch 非遞迴實現,返回對應的序號 system.out.println binarysearch arr,5 遞迴實現,返回對應的序號 system.out.println binsearch arr,5 非遞迴實現,返回對應的序號 au...

二分查詢(遞迴 非遞迴)

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

二分查詢的遞迴和非遞迴方式

1.典型的二分查詢的兩種方式 注意二分查詢的適用條件是遞增的陣列 1 遞迴方式 class binarytree system.out.println search a,12,0,a.length 1 public static int search int a,int data,int low,i...