1. 程式人生 > >利用java實現非遞迴二分查詢

利用java實現非遞迴二分查詢

package interview;
/**
 * 利用java實現非遞迴的二分查詢
 * @author zhoupeng
 *
 */
public class BinaryChop {
	public static void main(String[] args) {
		int [] a={1,2,3,4,5,6,7};
		int b=2;
		BinaryChop.binaryChop(a, b);
	}
	public static int binaryChop(int[] array,int des){
		//首先定義陣列的開始位置和結束位置以及中間位置
		int low=0;
		int high=array.length-1;
		while(low<=high){
			int middle=(high-low)/2;
			if(des==array[middle]){
				System.out.println(array[middle]);
				return middle;
			}else if(des>array[middle]){
				low=middle+1;
			}else if(des<array[middle]){
				high=middle-1;
			}
		}
		return -1;
		
	}
}

相關推薦

利用java實現二分查詢

package interview; /** * 利用java實現非遞迴的二分查詢 * @author zhoupeng * */ public class BinaryChop { public static void main(String[] args) {

Java實現陣列二分查詢二分查詢

public void binarySearch(int value){ int low = 0; int upper = nElements - 1; int currtIn = (low+u

【資料結構週週練】012 利用佇列和演算法實現二叉樹的層次遍歷

一、前言 二叉樹的遍歷是比較多樣化的遍歷,有很多種遍歷方式,先序遍歷,中序遍歷,後序遍歷,層次遍歷等等。本次給大家講的是層次遍歷,為了方便,我將題目中的資料改為編號,從左往右,從上往下依次遍歷。方便大家看到結果。 二、題目 將下圖用二叉樹存入,並通過層次遍歷方式,自上而下,從左往右對

快速排序 的原理及其java實現

快速排序由於排序效率在同為O(N*logN)的幾種排序方法中效率較高,因此經常被採用,再加上快速排序思想----分治法也確實實用,因此很多軟體公司的筆試面試,包括像騰訊,微軟等知名IT公司都喜歡考這個

【資料結構週週練】014 利用棧和演算法求鏈式儲存的二叉樹是否為完全二叉樹

一、前言 首先,明天是個很重要的節日,以後我也會過這個節日,在這裡,提前祝所有程式猿們,猿猴節快樂,哦不,是1024程式設計師節快樂。 今天要給大家分享的演算法是判斷二叉樹是否為完全二叉樹,相信大家對完全二叉樹的概念並不陌生,如果是順序儲存就會很方便,那鏈式儲存怎麼判斷呢,我的做法是:若

【資料結構週週練】013 利用棧和演算法求二叉樹的高

一、前言 二叉樹的高是樹比較重要的一個概念,指的是樹中結點的最大層數本次演算法通過非遞迴演算法來求得樹的高度,借用棧來實現樹中結點的儲存。 學英語真的很重要,所以文中的註釋還有輸出以後會盡量用英語寫,文中出現的英語語法或者單詞使用錯誤,還希望各位英語大神能不吝賜教。 二、題目 將

找數字(,二分查詢)

題目:在一從大到小排序的序列中用遞迴找一個數在不在這序列,在輸出yes,不在輸出no 這題用了二分查詢的遞迴實現 思路: 把陣列和變數都變成全域性變數方便遞迴函式修改 然後如果不可能就跳出迴圈 如果可能但現在沒找到就縮小範圍進入下一個遞迴過程 如果找到了就輸出 程式碼: #include

8皇后以及N皇后演算法探究,回溯演算法的JAVA實現方案(一)

八皇后問題,是一個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於1848年提出:在8×8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。 高斯認為有76種方案。1854年在柏林的象棋雜誌

java 實現對List做二分查詢(支援泛型)

廢話不多說 直接上程式碼: public class Main { public static void main(String[] args) { List<Integer> list = new ArrayLi

java實現的簡單的二分查詢演算法

一、什麼是二分查詢 二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,

java實現二分查詢演算法,兩種方式實現

java實現二分查詢演算法 1、概念 2、前提 3、思想 4、過程 4、複雜度 5、實現方式 1. 非遞迴方式 2. 遞迴方式

JAVA實驗二:編碼實現一個類對輸入陣列的數從小到大排序同時使用二分查詢某一個數(

編碼實現一個類 (1)提供一個靜態方法,可以將輸入的一個int[]陣列按照從小到大的順序排列; (2)提供靜態方法,對排好序的陣列使用折半(二分)查詢(使用遞迴和非遞迴兩種形式分別實現)查詢某一個整數。 答案 import java.util.*; public class

Java二分查詢演算法實現,分別使用方式)

public class BinarySearch { private int[] array; private int index; private int min; private int max; public BinarySearch(int[]

二分查詢 java實現

public static int rank(int []a , int x, int lo, int hi) { if(hi<lo) return -1; if(a[lo+(hi-lo)/2]>x) return rank(a,x,lo,lo+(hi-lo)/2-1);

二分查詢演算法java實現(實現實現)

二分查詢,如果一個有序集合,需要查詢其他特定 的查詢,我們可以使用二分查詢,加快查詢速度,具體的思路就是,每次取有序陣列的中間元素與待查詢元素進行比較,從而縮小一半的查詢範圍。 java版本非遞迴方式

二分查詢(使用方式和使用迴圈的方式來實現

二分查詢是一種查詢效率非常高的查詢演算法。又稱折半查詢。 二分查詢演算法思想 有序的序列,每次都是以序列的中間位置的數來與待查詢的關鍵字進行比較,每次縮小一半的查詢範圍,直到匹配成功。 一個情景:將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否

# 二分查詢實現

二分查詢的遞迴與非遞迴實現 二分查詢也稱為折半查詢,首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果

二分查詢實現(c語言實現

#include<stdio.h>++ int seeqSearch(int a[],int n,int k){     int i=n-1;     for(;i>=0;i--){//遍歷陣列         if(a[i]==k){//找到對應的陣列

二分查詢法(實現

二分查詢法:      二分查詢法又稱折半查詢法,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。(借鑑百度百科)時間複雜度為:log2n,即log以2為底,n的對數。     

二分查詢演算法的兩種實現方式:實現實現

二分查詢的條件是對一組有序陣列的查詢,這一點很容易忘記,在使用二分查詢的時候先要對陣列進行排序。 先說一下二分查詢的思路:一個有序陣列,想要查詢一個數字key的下標,首先算出中間下標mid,利用mid把這個陣列分為兩半,前一半從下標0到mid-1,後一半從mid+1到陣列最