class ClassOfStudents2 { private final int N = 1000; private Student[] classMembers; private int number; // Constructor: make array, set number to zero. public ClassOfStudents2() { classMembers = new Student[N]; number = 0; } public boolean insert(Student newStudent){ if (number==N) return false; int i; for(i = number++; i>0; i--) { int comparison = classMembers[i-1].surname.compareTo(newStudent.surname); if (comparison>0) classMembers[i] = classMembers[i-1]; else break; } classMembers[i] = newStudent; return true; } public Student find(String surname) { int i = 0, j = number, mid; while (i < j) { mid = (i+j)/2; // NB: "/" takes integral part int comparison = classMembers[mid].surname.compareTo(surname); if (comparison<0) { i = ++mid; } else if (comparison>0) { j = mid; } else { return classMembers[mid]; } } return null; } }