java二进制搜索通过名称列表打印两个名称之间的所有名称
问题描述:
我有一个包含名称列表的文件。我必须在列表中进行搜索并打印出我搜索的两个名称之间的所有名称。这里是我的代码:java二进制搜索通过名称列表打印两个名称之间的所有名称
case '5'://broken
System.out.println("Enter the first "last name" of the search.");
String fLast= console.next();
System.out.println("Enter the second "last name" of the search.");
String lLast = console.next();
String temp ="";
if(fLast.compareTo(lLast)<0)
{
temp=lLast;
lLast=fLast;
fLast=temp;
}
nameToNameSearch(fLast,lLast);
break;
public void nameToNameSearch(String name1, String name2)
{
ExtPerson[] nameToName = new ExtPerson[nMembes];
for(int x=1;x<nMembers-1; x++)
{
if(bookMembers[x].lastName.compareTo(name1)==0|| bookMembers
[x].lastName.compareTo (name1)>0)
{
if(bookMembers[x].lastName.compareTo(name2)==0|| bookMembers
[x].lastName.compareTo(name1)<0)
{
int add=0;
nameToName[add]=bookMembers[x];
add++;
}
}
答
如果这些都是分配的条款,你必须做一个二进制搜索找到这两个名字的下方,那么就从连续增加的索引打印的名字,直到你遇到更高的名字。更高的名字根本不需要参与二进制搜索。
我将排序名称,然后使用正则表达式从名称的toString()中提取列表...两行代码。 – Bohemian