JAVA专项练习

 解析:排序过程就是进行比较和交换过程,而时间复杂度就与比较和交换的次数相关。

解析:二维数组为4*3,可表示为

          1 0 0 

          3 2 0 

          6 7 8

          9 0 0

因为数组的起始位置为a[0][0],所以a[2][1]为第三行第二列,即7。

 

 

解析:递归工作栈里面包括返回地址、本层的局部变量和递归调用的形参代换用实参,所以正常情况下,无论递归过程有没有使用局部变量,转换为非递归过程都需要用栈来模拟这个递归调用过程。

 

不稳定:快选堆希

稳    定:插冒归基

 归并排序的平均时间复杂度为O(nlogn), 其他三个排序的平均时间复杂度为O(n^2)

快速排序、归并排序和插入排序必须等到整个排序结束后才能够求出最小的 10 个数,而堆排序只需要在初始堆的基础上再进行 10 次筛选即可,每次筛选的时间复杂度为 O(log2n) 

 

外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分,分别把每一部分调入内存完成排序。然后,对已经排序的子文件进行多路归并排序。

 

 尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。 尾递归调用时,如果做了优化,栈不会增长,因此,无论多少次调用也不会导致栈溢出。

 

 

push() 在数组末尾添加元素,返回新数组长度,所以返回5

pop() 删除数组最后一位,返回所删除的元素,所以返回5

shift() 删除数组第一位,返回所删除的元素,所以返回1

unshift() 在数组开头添加元素,返回新数组长度,所以返回5

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值