【发布时间】:2013-12-19 22:21:13
【问题描述】:
我遇到了一个问题,用户得到一本空的食谱书,他们可以输入食谱并对其进行排序。
我知道如果一本书是空的,有一个菜谱和两个菜谱(升序/降序),它就会被排序。这些可以使用二分查找。
但是当用户输入第三个食谱时,它可能是“cookies, donut, turkey”(已排序)或“cookies, donut, apples”且未排序。如果它没有排序,那么我必须使用线性搜索。
这是我目前所拥有的
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 个元素的列表?你到底想做什么?
-
您似乎在尝试排序,而不是搜索。您需要检查输入是否已排序,然后进行相应搜索
标签: java search binary-search linear-search