您当前的位置: 百科371电脑/网络JAVA相关 → 电脑/网络内容 退出登录 用户管理 用户注册
本类热门文章
相关文章
中原建材网
一道关于递归运用二叉查找法的JAVA题目

减小字体 增大字体

问题:我的代码为:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class BinarySearchSuper extends JApplet implements ActionListener{ JLabel enterLabel,resultLabel; JTextField enterField,resultField; int array[]; public void init() { Container container=getContentPane(); container.setLayout(new FlowLayout()); enterLabel=new JLabel(Enter integer search key); container.add(enterLabel); enterField=new JTextField(10); container.add(enterField); enterField.addActionListener(this); resultLabel=new JLabel(Result); container.add(resultLabel); resultField=new JTextField(20); resultField.setEditable(false); container.add(resultField); array=new int[15]; for(int counter=0;counter<array.length;counter++) array[counter]=2*counter; }public void actionPerformed(ActionEvent actionEvent){ String searchKey=actionEvent.getActionCommand(); int element=binarySearch(array,0,array.length-1,Integer.parseInt(searchKey)); if(element!=-1) resultField.setText(Found value in element+element); else resultField.setText(Value not found);}public int binarySearch(int array2[],int low,int high,int key) { int middle; if(low<high) { middle=(low+high)/2; if(key==array2[middle]) return middle; else if(key<array2[middle]) binarySearch(array2,low,middle-1,key); else binarySearch(array2,middle+1,high,key); } return -1; }}为什么运行以后 无论我输入什么数字它都显示未找到数据呢?是不是我的查找方法有问题?在递归调用的时候是不是存在什么漏洞?请高人指点...  

//不应该去改递归的返回值,只能在递归中找出答案
package com.image;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class BinarySearchSuper extends JApplet implements ActionListener {
JLabel enterLabel, resultLabel;

JTextField enterField, resultField;

int array[];
int flag = -1;
public void init() {
Container container = getContentPane();
container.setLayout(new FlowLayout());
enterLabel = new JLabel("Enter integer search key");
container.add(enterLabel);

enterField = new JTextField(10);
container.add(enterField);
enterField.addActionListener(this);

resultLabel = new JLabel("Result");
container.add(resultLabel);

resultField = new JTextField(20);
resultField.setEditable(false);
container.add(resultField);

array = new int[15];
for (int counter = 0; counter < array.length; counter++)
array[counter] = 2 * counter;
}

public void actionPerformed(ActionEvent actionEvent) {
String searchKey = actionEvent.getActionCommand();
binarySearch(array, 0, array.length - 1, Integer
.parseInt(searchKey));

if (flag != -1)
resultField.setText("Found value in element" + flag);
else
resultField.setText("Value not found");
}

public void binarySearch(int array2[], int low, int high, int key) {
flag = -1;
if (low < high) {
System.out.println(low+"............"+high);
int middle = (low + high) / 2;
if (key == array2[middle])
flag = middle;
else if (key < array2[middle])
binarySearch(array2, low, middle - 1, key);
else
binarySearch(array2, middle + 1, high, key);
}
}
}

如果你对我的代码为:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class BinarySearchSuper extends JApplet implements ActionListener{ JLabel enterLabel,resultLabel; JTextField enterField,resultField; int array[]; public void init() { Container container=getContentPane(); container.setLayout(new FlowLayout()); enterLabel=new JLabel(Enter integer search key); container.add(enterLabel); enterField=new JTextField(10); container.add(enterField); enterField.addActionListener(this); resultLabel=new JLabel(Result); container.add(resultLabel); resultField=new JTextField(20); resultField.setEditable(false); container.add(resultField); array=new int[15]; for(int counter=0;counter<array.length;counter++) array[counter]=2*counter; }public void actionPerformed(ActionEvent actionEvent){ String searchKey=actionEvent.getActionCommand(); int element=binarySearch(array,0,array.length-1,Integer.parseInt(searchKey)); if(element!=-1) resultField.setText(Found value in element+element); else resultField.setText(Value not found);}public int binarySearch(int array2[],int low,int high,int key) { int middle; if(low<high) { middle=(low+high)/2; if(key==array2[middle]) return middle; else if(key<array2[middle]) binarySearch(array2,low,middle-1,key); else binarySearch(array2,middle+1,high,key); } return -1; }}为什么运行以后 无论我输入什么数字它都显示未找到数据呢?是不是我的查找方法有问题?在递归调用的时候是不是存在什么漏洞?请高人指点...这个问题有好的意见或 建议,请留言
[] [返回上一页] [打 印]
电脑/网络评论 (评论内容只代表网友观点,与本站立场无关!)

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

中原建材网 简单版 站长QQ:382546553