AP计算机科学A:顺序

学习AP计算机科学A的概念,示例问题和解释

大学导师应用商店 大学导师安卓商店

例子问题

问题21:计算机科学

下面哪一个实现了一个名为包含顺序搜索数组,确认数组是否包含所请求的元素?

可能的答案:

其他答案都不对

公共布尔包含(int[] arr, int val) {

For (int I = 0;I < arr.length;我+ +){

如果(arr[i] == val) {

返回true;

}

}

返回错误;

}

公共布尔包含(int[] arr, int val) {

布尔成功;

For (int I = 0;I <= arr.length;我+ +){

如果(arr[i] == val) {

成功=真;

} else {

成功= false;

}

}

返回成功;

}

Public int包含(int[] arr, int val) {

Int success = -1;

For (int I = 0;I < arr.length;我+ +){

如果(arr[i] == val) {

Success = val;

}

}

返回成功;

}

公共布尔包含(int[] arr, int val) {

For (int I = 0;I < arr.length;我+ +){

If (arr[i] != val) {

返回错误;

}

}

返回true;

}

正确答案:

公共布尔包含(int[] arr, int val) {

For (int I = 0;I < arr.length;我+ +){

如果(arr[i] == val) {

返回true;

}

}

返回错误;

}

解释

实现顺序搜索的基本方法是测试数组的每个元素,直到匹配您想要查找的值。所有这些可能的答案都非常接近这个。它们都遍历给定的数组。它们都检查值。但是,有一个选项(使用if-else逻辑)即使找到了元素也可能返回false,因为它在找到元素后继续运行。如果数组后面的另一个值不匹配,则该变量成功然后设置为。这将被返回,表示未能找到该值。整数返回方法似乎很好,但是如果搜索的值是- 1,它将是不明确的。在这种情况下,这个返回值不一定表示已经找到了它——它可能只是表示没有找到任何东西的“标志”。因此,这里最简单的方法是最好的:返回真正的一找到就去。

问题21:标准操作与算法

Public static int foo(int[] arr, int x) {

For (int I = 0;I < arr.length;我+ +){

如果(arr[i] == x) {

返回我;

}

}

返回1;

}

给定上面定义的方法,下面代码输出单词“indubitable !”的次数是多少?

Int [] vals = {1,4,51,3,14,91,130,14};

For (int I = 0;I < 20;我+ +){

If (foo(vals,i%4) < 0) {

System.out.println(“无疑!”);

}

}

可能的答案:

没有一个

4

2

5

10

正确答案:

10

解释

为了使这个问题更简单,首先注意喷火方法实现顺序搜索。(这种搜索只是遍历数组的每个元素,看看它是否等于探测值。)如果找到,它将返回索引。否则,它返回-1。现在,在问题本身的代码块中,循环从i = 0迭代到i = 19。但是,它将只对值0…3执行搜索。这是因为模数运算符。因此,它将做(从0到19),0…3 .共5次。因此,它将探测1和3五次——它们都在数组中。因此,单词“indubitable !”将总共输出10次。

问题1:搜索

真或假。

顺序搜索比二分搜索更有效。

可能的答案:

真正的

正确答案:

解释

顺序搜索的运行时间为O(N)。二分查找的运行时间是O(log(N))。因为顺序搜索必须遍历列表中的每个元素至少一次,所以效率较低。

大学导师提供的学习工具