java二进制搜索通过名称列表来打印两个名称之间的所有名称

时间:2013-11-26 01:03:51

标签: 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++;
        }
    }

1 个答案:

答案 0 :(得分:0)

如果这些是赋值的条款,则必须进行一次二进制搜索以找到两个名称中的较低者,然后只是从连续增加的索引中打印名称,直到遇到更高的名称。更高的名称根本不需要参与二进制搜索。