У меня возникает проблема, когда пользователю предоставляется пустая книга рецептов, и они могут вводить и сортировать рецепты.Использовать двоичный поиск, если сортировка в противном случае использует линейный поиск
Я знаю, что книга сортируется, если она пуста, имеет один рецепт и два рецепта (восходящий/нисходящий). Они могут использовать двоичный поиск.
Но когда пользователь вводит третий рецепт, он может быть «куки, пончик, индейка» (который сортируется) или «куки, пончик, яблоки», и это не сортируется. Если он не отсортирован, я должен использовать линейный поиск.
Это то, что я до сих пор
public void sortBook(int choice, boolean ascend) {
RecipeBookComparator comparing = new RecipeBookComparator(choice, ascend);
mList.sort(comparing);}
public class RecipeBookComparator implements Comparator {
private int mSortRBook;
private boolean mAscend;
public RecipeBookComparator (int choice, boolean ascend) {
mSortRBook = choice;
mAscend = ascend;
}
public int compare(Object o1, Object o2) {
Recipe s1 = (Recipe)o1, s2 = (Recipe)o2;
switch (mSortRBook) {
case 1:
if (mAscend == true) {
int compareName = s1.getName().compareTo(s2.getName());
if (compareName != 0) {
return compareName;
}
}
else {
int compareName = s1.getName().compareTo(s2.getName());
if (compareName != 0) {
return compareName * -1;
}
} ///more cases...
Я знаю, что я должен делать, но я не знаю, как подойти к нему «код-накрест»
Зачем вам нужен бинарный поиск для поиска по списку из 2 элементов? Что вы пытаетесь сделать точно? –
Похоже, вы пытаетесь СОРТИРОВАТЬ, а не искать. Вам нужно проверить, сортируется ли вход, а затем искать соответственно. – JoeG