1. 程式人生 > 其它 >二分搜尋的非遞迴方法(java)

二分搜尋的非遞迴方法(java)

技術標籤:演算法演算法java

二分搜尋的非遞迴方法

所要搜尋的數值x從控制檯輸入
在這裡插入圖片描述

所要查詢的陣列從檔案讀入,第一行為陣列數字個數,第二行為陣列內數值
在這裡插入圖片描述

package com.example.twoss;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
//二分搜尋的非遞迴方法
public class FeiDiGui {
	private static int n;
	private static int[] a;
	
	public static int efss(
int n,int x,int a[]) { int left=0; int right=n-1; while(left<=right) { int middle=(left+right)/2; if(x==a[middle]) { return middle; } if(x>a[middle]) { left=middle+1; }else { right=middle-1; } } return -1; } public static void main(String[] args) { // TODO 自動生成的方法存根 System.out.println(
"請輸入你所希望查詢的數值:"); Scanner scanner = new Scanner(System. in ); int x=scanner.nextInt(); try { File file=new File("./input.txt"); Scanner input = new Scanner(file); while (input.hasNext()) { //陣列中數字的個數 n = input.nextInt(); a = new int[n]; for(int i=0;
i<n; i++) { a[i]=input.nextInt(); } } } catch (FileNotFoundException e) { // TODO 自動生成的 catch 塊 e.printStackTrace(); } int pd = efss(n,x,a); if(pd!=-1) { System.out.println("該數值的陣列下標為"+pd); }else { System.out.println("數值"+x+"不在該陣列中"); } } }

附二分搜尋遞迴方法的連線:
二分搜尋的遞迴方法