java中的插值搜索

时间:2016-04-01 13:58:09

标签: java algorithm search

我在大学的任务是由学生book_mark_ID和通过军事准备的学生( military_prep_sign ==“是”)实施插值搜索。 所以我有Student课程,其中包含必要的信息( ame,surname,book_mark_ID,military_prep_sign ),我在SearchAlgorithms类中创建了一个Student类型数组。我使用ArrayList添加找到的学生。我在主类中输出了数组的元素。 问题是当我尝试输出找到的元素时,我没有得到任何数据。

SearchAlgorithms类中的插值搜索方法:

public ArrayList<Student> interpolation_Search(int toFind)
{
    ArrayList<Student> students = new ArrayList<>();
    //Student st2 = new Student();
    int low = 0;
    int high = st.length - 1;
    int mid;

    while(st[low].get_BookMarkID() < toFind && st[high].get_BookMarkID() > toFind)
    {
        mid = low + ((toFind - st[low].get_BookMarkID()) * (high - low)/ 
                (st[high].get_BookMarkID() - st[low].get_BookMarkID()));

        if(st[mid].get_BookMarkID() < toFind)
            low = mid + 1;
        else if(st[mid].get_BookMarkID() > toFind)
            high = mid - 1;
        else
        {
            if(st[mid].get_MilitaryPrepSign().equals("yes"))
            {
                students.add(st[mid]);
                mid++;
            }
        }
    }

    if(st[low].get_BookMarkID() == toFind)
    {
        if(st[low].get_MilitaryPrepSign().equals("yes"))
            students.add(st[low]);
    }

    else if(st[high].get_BookMarkID() == toFind)
    {
        if(st[high].get_MilitaryPrepSign().equals("yes"))
            students.add(st[high]);
    }

    return students;
}

主要课程:

SearchAlgorithms new_search = new SearchAlgorithms(size);
    new_search.add(st);
    new_search.add(st1);
    new_search.add(st2);
    new_search.add(st3);
    new_search.add(st4);
    new_search.add(st5);

    new_search.display_Sort();
    new_search.insertionSort(0, 5);

    System.out.println("____________________");
    new_search.display_Sort();

    ArrayList<Student> students1 = new_search.interpolation_Search(532);
    System.out.println("\nFound student");
    for(Student student: students1)
    {
        System.out.println(student);
    }

0 个答案:

没有答案