Java初阶数据结构练习

时间:2023-04-05 07:10:51

1. ArrayList list=new ArrayList(20)扩充了( A )次

A. 0

B. 1

C. 2

当调用的是不带参数的构造方法时,默认大小时10,之后就开始扩容

但是这里调用的是带参数的构造方法

 

2.在一个具有n个节点的有序单链表中插入一个新节点并仍然保持有序的的时间复杂度

是( B ) 

A. O(1)

B. O(n)

C. O(n^2)

D. O(n*log 2 n)

3.一颗二叉树的前序遍历是BCDEFAG,后序遍历是DCFAEGB,那麽他的后序遍历是

DAFGECB 

Java初阶数据结构练习

 

4.一颗完全二叉树,根节点编号1,问编号为98的父亲节点编号是 (49)

当根节点编号是0,parent=(child-1)/2;

所以:98/2

5.用不带头的单链表存储队列,其对头指针指向对头结点,队尾指针指向队尾节点,则在进行出队操作时()

A.仅修改队头指针

B.仅修改队尾指针

C.队头指针,队尾指针都有可能需要修改

D.队头指针,队尾指针都要修改 

答案:C

当队列中只有一个元素的时候,出队,队头队尾指针都要置为空。

 6.HashMap通过链地址法来解决哈希冲突。

7.下列排序中,最坏情况下时间复杂度最低的是(C)

A. 希尔排序 N^1.5

B. 快速排序 N^2

C. 堆排序 N log n

D. 冒泡排序 N^2

8.假设有100MB的内存,需要对1GB的数据进行排序,最合适的算法是:归并排序

 

 9.斐波那契数列如0,1,1,2,3,5,8,13,21,.......,给定一个任意的数字,问它还有几步能变成斐波那契数

 

   public static int func(int key){
        int f1=0;
        int f2=1;
        int f3=-1;
        while(f3<key){
            f3=f1+f2;
            if(f3>key){
                break;
            }
            f1=f2;
            f2=f3;

        }
        if(key-f2>f3-key){
            return f3-key;
        }else{
            return key-f2;

        }
    }