我在大学的任务是由学生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);
}