2024年西安交通大学软件工程专业考研915真题

文章目录

  • 2024年西安交通大学软件工程专业考研915真题
    • 选择题
    • 填空题
    • 简答题

2024年西安交通大学软件工程专业考研915真题

写在前面

本文旨在帮助考生了解915的知识点考察方法,我备考过程也做过那些机构所谓的回忆版真题,实在错漏百出让人难以理解出题人的想法,但是上了考场之后发现出题人真的非常严谨,于是考完之后就想把所有题目回忆出来,题目的选项以及数据实在无法全部记下来,考生可以自己造一些数据自行练习。

选择题

  1. 数据的最小单位是什么

  2. 某算法的时间复杂度为 T ( n ) = n l o g n + n 3 2 T(n) = nlogn + n^{\frac{3}{2}} T(n)=nlogn+n23,问下列哪个复杂度表示是错的

    A. Ω ( n l o g n ) Ω(nlogn) Ω(nlogn)
    B. Ω ( n 3 2 ) Ω(n^{\frac{3}{2}}) Ω(n23)
    C. Θ ( n 3 2 ) Θ(n^{\frac{3}{2}}) Θ(n23)
    D. O ( n l o g n ) O(nlogn) O(nlogn)

  3. 给定数据,求哈夫曼树的外部结点带权路径长度

  4. 给定数据,按顺序插入2-3树,求根节点的数据

  5. Floyd的邻接矩阵的k次方的 D i j D_{ij} Dij是什么含义

  6. 在装载因子a<1的哈希表中,线性探测法和平方探测法能否保证一定插入

  7. 给定对称矩阵 A [ 1 … 15 ] [ 1 … 15 ] A[1…15][1…15] A[115][115],按列优先的顺序放入 B [ 0 … 120 ] B[0…120] B[0120]中,问 A [ 10 ] [ 5 ] A[10][5] A[10][5]对应B数组的下标是

  8. 判断下列说法正确的是

    A. 对图的一次dfs可以遍历到图的所有节点
    B. 有向图的邻接表和逆邻接表的结点个数不相等
    C. 一棵树用左孩子右兄弟来表示得到的二叉树的根节点没有右儿子
    D.

  9. 一棵哈夫曼树有m个叶子节结点,若用二叉链表存储,则有多少个空链域

  10. 对图片的像素颜色进行分类,以下哪个算法的效率最快

    A. HashTable
    B. Heap
    C. 并查集
    D. AVL

填空题

  1. O ( l o g ( N 2 ) ) O(log(N^2)) O(log(N2)) 0.000001 N 0.000001N 0.000001N O ( l o g ( 2 N ) ) O(log(2^N)) O(log(2N)) O ( l o g N ) O(logN) O(logN) O ( N l o g N ) O(NlogN) O(NlogN) O ( 4 N ) O(4^N) O(4N), 对于相同N,请按照增长率从低到高排序

  2. 一棵高为4的AVL,最少有多少个结点,最多有多少个结点(树根高为1)

  3. 为什么一个正序数组可以看作一个小根堆

  4. 若一个有向图中,结点编号为1到k,若两点存在边当且仅当结点编号i < j,问图中有多少条边,有多少个拓扑排序

  5. 给出3个BST查找数据的比较过程序列,构建出这棵BST,求这棵树的先序遍历序列

  6. 对于全部元素相同的数组,插入排序的算法复杂度是多少?快速排序的复杂度是多少?(用O表示)

  7. 给你中缀表达式,写出它的后缀表达式

  8. 每次从未排序的选一个,和已经排序的进行比较,请问是什么排序方法

  9. 逆序输出AVL的所有偶数,AVL中有N个元素,请问时间复杂度

  10. 循环队列队头是F,对尾是R,长度是M,求队列现有元素的个数(对头指向第一个结点,队尾指向最后一个结点的后面一个)

简答题

  1. (1) 用数学归纳法证明 leaves(T) ≤ internal (T) + 1,其中leaves(T)表示树T中的叶子节点个数,internal(T) 是树T内部节点的个数
    (2) 对于下列两个函数,g[N]只会返回true或false,问两个函数分别的最好时间复杂度和最坏时间复杂度是多少,用Θ表示

    void fun1(int N)
    {
        if (N == 0) return;
        fun1(N - 1);
        if (g[N - 1]) fun1(N - 1)
    }
    
    void fun2(int N)
    {
        if (N == 0) return;
        fun2(N / 2);
        if (g[N / 2]) fun2(N / 2);
    }
    
  2. (1) 对于下列函数,问fun(1234)的值是多少,时间复杂度是多少

    int fun(int N)
    {
        if (N < 10) return N * 10 + N;
        int a = fun(N / 10);
        int b = fun(N % 10);
        return a * 100 + b;
    }
    

    (2) 对于上述函数,结合数据结构栈,把递归改成递推,写出相关代码加上必要注释

  3. 定义一个先中序遍历,代码如下

    void Prein(TNode *root)
    {
        if (root == NULL) return;
        print(root -> data); // 访问节点
        Prein(T -> lchild);
        print(root -> data); // 访问节点
        Prein(T -> rchild);
    }
    

    (1) 给定数据,构造一棵BST
    (2) 写出(1)中的先中序遍历序列
    (3) 给定一个先中序遍历序列,构造出二叉树
    (4) 给定先中序遍历序列 3 3 3 3 3 3 4 4,写出符合这个序列的所有可能的二叉树

  4. 给定一个图的邻接矩阵

    (1) 以A为起始点,按照字母顺序优先,写出DFS和BFS序列
    (2) 分别写出普利姆和克鲁斯卡尔算法求最小生成树的过程,按照选边的顺序(例如:(A,B))普利姆算法以A为起始点
    (3) 求出Dijikstra算法以A为起点到其他所有点的最短路径,并画出最短路径生成树
    (4) Dijkstra算法适用于正权图,当出现负权边时会失效,对于从A到G的路径中,改变哪一条边为负会让(3)中求的最短路径改变,这种边可能不止一条,请举例出所有边,并解释原因

  5. 给定长度为9的哈希表,哈希函数是h(k) = k % 9

    (1) 若哈希表中都是普通链表,画出哈希表并求平均查找长度
    (2) 若哈希表中都是AVL,画出哈希表并求平均长度

  6. (1) 小明同学认为插入排序中最坏和平均的时间复杂度都是 O ( N 2 ) O(N^2) O(N2) 的,如果数组正序的话,那么不需要进行交换,则时间复杂度是O(1)的,你认为他说的对吗?说明理由
    (2) 下面给出四个排序算法进行过程中某个时刻的序列情况,判断是分别是什么排序算法,备选的有SelectionSort、MergeSort、QuickSort、HeapSort
    ① 04 02 05 03 09 07 08 12 15 62 84 15 72 84 26 17
    ② 84 87 92 98 12 15 27 49 30 60 71 84 02 04 06 08
    ③ 01 02 04 92 58 91 28 94 27 59 29 12 49 20 18 22
    ④ 01 04 02 18 29 03 05 12 84 28 49 17 28 91 26 48

  7. 亲和数,又称相亲数、友爱数、友好数,指两个正整数中,彼此的全部约数之和(本身除外)与另一方相等,求10000以内的所有亲和数,给出完整代码

    样例输出:
    220:1 2 4 5 10 11 20 22 44 55 110
    284:1 2 4 71 142

  8. 给定两个字符串s和t,s和t的长度最大是n,判断s和t的相同字母的数量是否相等,大小写敏感,且时间复杂度要求在O(n),除了输入输出不能用字符串相关的函数,如果是则输出true,不是输出false,给出完整代码

你可能感兴趣的:(考研,软件工程)