12.7 顺序查找
接下来要编写的方法是 search,它接受两个参数——一个 Card 数组和一个 Card 对象,并返回 Card 对象在 Card 数组中的位置。如果 Card 对象没有出现在 Card 数组中,则返回-1。下面这个版本的 search 方法使用了 8.6 节中的算法——顺序查找(sequential search):
public static int search(Card[] cards, Card target) {for (int i = 0; i < cards.length; i++) {if (cards[i].equals(target)) {return i;}}return -1;}
这个方法发现指定的 Card 对象后立即返回,这意味着如果中途找到了目标,就不必遍历整个数组。如果未中途退出循环,就说明指定的 Card 对象不在数组中。注意,这个算法依赖于方法 equals。
如果数组中的 Card 对象未经排序,那么就无法以比顺序查找更快的速度进行查找,而必须检查每个 Card 对象,因为不这样做就无法确定要找的 Card 对象在不在数组中。然而,如果这些 Card 对象是按顺序排列的,就可使用更好的算法。
如何对数组排序将在下一章中介绍。将数组排序后,查找元素将容易得多。顺序查找的效率极低,数组非常大时尤其如此。
