二分法(输入一组数,输入要找的数,看二分法需要几次找到)


import java.io.BufferedReader;
import java.io.InputStreamReader;

public class TwoFenOrder{

public int[] inputInteger(){
System.out.println("please input Integer......");
String temp=null;
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
temp = br.readLine();
}catch(Exception e){
e.printStackTrace();
}

final int count = temp.length();
int[] intArray = new int[count];

for(int i=0 ; i<count ;i++){
intArray[i] = Integer.valueOf(temp.substring(i,i+1));
}

//二分法要求数组必须是有序的。(使用递归)
int tmpInt=0;
for(int i=0 ;i <count ; i++){
for(int j=i;j<count;j++){
if(intArray[i] > intArray[j]){
tmpInt = intArray[j];
intArray[j] = intArray[i];
intArray[i] = tmpInt;
}
}
}

//输出排列之后的数组
for(int i : intArray){
System.out.print(i + " ");
}

return intArray;
}

public void twoOrder(int[] intArray){
System.out.println("please input Integer findValue !!!!!!!!");
String temp = null;
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
temp = br.readLine();
}catch(Exception e){
e.printStackTrace();
}

final int count =intArray.length;

//要寻找的值
int findValue = Integer.valueOf(temp);

//起始start索引
int start = 0;

//终了end索引
int end = count-1;

//比较索引
int index = (start + end)/2;

//二分法查找次数
int sum = 0;

while(true){
if(intArray[index] < findValue){
start = index;
index = (start + end)/2;
sum++;
}else if(intArray[index] > findValue){
end = index;
index = (start + end)/2;
sum++;
}else if(intArray[index] == findValue){
System.out.println("使用二分法查找的次数是:" + sum);
break;
}//如果输入没有怎么办那?
}
}

public static void main(String[] args){
TwoFenOrder twoFenOrder = new TwoFenOrder();
int[] intArray = twoFenOrder.inputInteger();
twoFenOrder.twoOrder(intArray);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值