计算机科学:插入

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

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

例子问题

问题11:计算机科学

public static int[] doWork(int[] arr, int val,int index) {

Int [] ret = new Int [arr.]长度+ 1];

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

Ret [i] = arr[i];

Ret [index] = val;

For (int I = index + 1;I < ret.length;我+ +){

Ret [i] = arr[i - 1];

返回受潮湿腐烂;

上面的代码执行什么?

可能的答案:

其他人都没有回答

它从数组中删除一个值,只要它是给定的指数

它通过覆盖之前的值将一个新值插入到数组中

它向数组中插入一个新值,并将该值添加到现有数组中

它在数组中搜索一个值,并在找到该值的索引处存储一个新值

正确答案:

它向数组中插入一个新值,并将该值添加到现有数组中

解释

这样的问题很容易通过仔细阅读相关代码来理解。让我们考虑代码的每个主要部分:

Int [] ret = new Int [arr.]长度+ 1];

这一行代码创建了一个新数组,该数组比原数组长1加勒比海盗

For (int I = 0;I < index;I ++)……

这个循环复制到受潮湿腐烂的价值加勒比海盗索引- 1

(这是因为I < index条件)

然后,代码存储值瓦尔ret(指数)

For (int I = index + 1;I < ret.length;I ++)……

然后完成将值复制到受潮湿腐烂

因此,它所做的是向原始数组插入一个值加勒比海盗,返回大一个大小的新数组。(这是必要的,因为Java中数组的静态大小。)

例子问题1:插入

public static int[] doWork(int[] arr, int val,int index) {

Int [] ret = new Int [arr.]长度+ 1];

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

Ret [i] = arr[i];

Ret [index] = val;

For (int I = index + 1;I < ret.length;我+ +){

Ret [i] = arr[i - 1];

返回受潮湿腐烂;

在上面代码的第一个循环中,下列哪一个是可能的错误?

一、阵列加勒比海盗可能被索引到边界外。

2数组受潮湿腐烂可能被索引到边界外。

3可能会发生空指针异常。

可能的答案:

只有第三

I, II,和III

II和III

I和III

只有我

正确答案:

I和III

解释

最明显的可能错误是数组Arr可能是一个空值。在使用变量之前,需要检查这些类型的值。(如果你做arr[0]对于空值,将抛出异常。)此外,给index的值可能太大。考虑如果指数= 100加勒比海盗只有4个元素长。然后,你会有受潮湿腐烂是一个5值数组。当第一个循环开始运行时,您将一直到索引值99(或者至少尝试这样做);h然而,一旦你开始Ret [4] = arr[4],将会出现一个越界错误加勒比海盗,其中只有索引0、1、2和3。当然,以后可能会有其他问题受潮湿腐烂,但问题只问了第一个循环。

例子问题1:插入

Int [] arr = {0,0,0,0,0,0,0,0,0};

int arrFill = 0;

int val;

//在这里,添加了n个条目。ArrFill是n,假设n <= 9

//变量val现在包含要添加的新值

下列哪个代码块将新值推入加勒比海盗好像它是一堆东西?

可能的答案:

其他的都没有

arr[arrFill - 1] = val;

arrFill + +;

Arr [0] = val;

arrFill + +;

arr[arrFill + 1] = val;

arrFill + +;

arr[arrFill] = val;

arrFill + +;

正确答案:

arr[arrFill] = val;

arrFill + +;

解释

让我们假设数组加勒比海盗看起来像下面的整数列表:

{4, 51岁,41岁,0,0,0,0,0,0,0}

假设我们的新值是77

堆栈可以要么推到开头并将所有内容向后移动,得到如下内容:

{77 4, 51岁,41岁,0,0,0,0,0,0}

但是,没有一个选项可以做到这一点。(不,即使是使用索引的那个也不行0.这个元素并不会添加到数组中,而是替换数组的第一个元素。)

所以,另一个选择是把它放在列表的“末尾”。的变量arrFill正被用于此目的。如果是的话3.,这意味着它是第四个元素的值。因此,你可以设置arr[4] = 77(实际上是4)arrFill).

这将给你:

{4, 51岁,41岁,77年,0,0,0,0,0,0}

的值还要加上1arrFill

其他选项不能正确地寻址数组。它们要么太大,要么太小。

示例问题21:计算机科学

对或错。

插入数组列表的最坏情况是O(N)。

可能的答案:

真正的

正确答案:

真正的

解释

插入数组列表通常是O(1)。然而,由于ArrayList使用数组作为其底层数据结构,因此可能需要调整底层数组的大小。调整数组大小需要创建一个新数组,并将所有数据从旧数组复制到新数组,这需要O(N)时间。

大学导师的学习工具