題目:
標準輸入輸出
題目描述:
實現折半查找。要求查找給定的值在數據表中相應的存儲位置。本題目假定輸入元素均按非降序輸入。
輸入:
輸入包含若干個測試用例,第一行為測試用例個數k。每個測試用例占3行,其中第一行為元素個數n,第二行為n個元素值,即數據表中的元素,第三行為需要查找的元素。
輸出:
對每一測試用例,分別用一行輸出兩個值,分別表示相應的位置和查找次數,用空格隔開。如果查找不成功,則位置表0表示。?
輸入樣例:
1
5
1 2 4 7 9
4
輸出樣例:
3 1
代碼:
import java.util.*;
public class Xingyuxingxi {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n,m;n= sc.nextInt();while(n--!=0){m=sc.nextInt();int []b=new int[m+1];for (int i = 1; i <= m; i++) {b[i]=sc.nextInt();}int a=sc.nextInt();int l=1,r=m,mid,cnt=1;while(l<r){mid=(l+r)/2;if(b[mid]>a){r=mid;}else if(b[mid]<a){l=mid+1;}else break;cnt++;}mid=(l+r)/2;if(b[mid]==a)System.out.println(mid+" "+cnt);elseSystem.out.println(0+" "+cnt);}}
}