【大学院-筆記試験練習:线性代数和数据结构(14)】

大学院-筆記試験練習:线性代数和数据结构(14)

1-前言

为了升到自己目标的大学院,所作的努力和学习,这里是线性代数和数据结构部分。

2-线性代数-题目

3-线性代数-参考答案






4-数据结构-题目

5-数据结构-参考答案


問1(バブルソート)

(1) ~ (3)

你在纸上给出的结论:

  • 比较回数:③ 2
  • 交换回数:② 1
  • 最外层循环次数:④ C
  • 时间复杂度:⑤ c

👉 这四个判定全部是 ○(正确)

理由(简述):

  • 初始 {5,2,7,1}
  • 第 1 趟:最大值 7 冒到最后
  • 第 2 趟:5 再冒一次
  • 第 3 趟:剩余已排好
    → 比较/交换次数与你写的一致
    O(n²) 正确

問2(二分探索)

(1) 擬似コード空欄①〜⑤

你写的是(整理后):

空欄 你的答案 判定
key < A[mid]
end = mid - 1
start = mid + 1
A[mid] == key
A, start, mid-1, key

👉 ①〜⑤ 全部 ○(满分)


(2) BinarySearch1(A,5) の返り値

你写:2

👉 ○ 正确

数组 {1,2,5,7}
A[2] = 5 → 正确返回索引 2。


(3) BinarySearch1 が −1 を返す条件

你写:

配列Aの中に key が存在しない場合

👉 ○ 正确(而且是模范答案)


(4) 最良・最悪時間計算量

你写:

O(1), O(log n)

👉 ○ 正确

  • 最良:第一次 mid 命中 → O(1)
  • 最悪:完全找不到或最后才命中 → O(log n)

(5) 再帰呼び出し回数

BinarySearch2(A,0,3,5)

你写:

3回

👉 △(思路对,但数错 1 次)

我们严格数一遍:

复制代码
BinarySearch2(A,0,3,5)
 → mid=1 (A[1]=2) < 5
 → BinarySearch2(A,2,3,5)

BinarySearch2(A,2,3,5)
 → mid=2 (A[2]=5) == key
 → return

👉 调用次数是 2 回

所以:

  • 思路正确
  • 计数偏 1

(6) 再帰版 非再帰版が速い理由

你写的大意是:

再帰会使用额外空间,函数调用有开销

👉 △(方向正确,但理由不完整)

  • 再帰呼び出しには 関数呼び出しオーバーヘッド
  • スタック使用
  • 非再帰版は 同じ計算量だが定数時間が小さい

你只写了"空间"和"时间可能变长",没有点出「関数呼び出しオーバーヘッド」

👉 判定:


「関数呼び出しオーバーヘッド」是什么意思?

一句话版本(考试用):

👉 调用函数本身就要花时间和资源,这些"额外的消耗"就叫「関数呼び出しオーバーヘッド」

6-总结

训练成长。!!

相关推荐
琢磨先生David7 天前
Day1:基础入门·两数之和(LeetCode 1)
数据结构·算法·leetcode
qq_454245037 天前
基于组件与行为的树状节点系统
数据结构·c#
超级大福宝7 天前
N皇后问题:经典回溯算法的一些分析
数据结构·c++·算法·leetcode
岛雨QA7 天前
常用十种算法「Java数据结构与算法学习笔记13」
数据结构·算法
weiabc7 天前
printf(“%lf“, ys) 和 cout << ys 输出的浮点数格式存在细微差异
数据结构·c++·算法
wefg17 天前
【算法】单调栈和单调队列
数据结构·算法
岛雨QA7 天前
图「Java数据结构与算法学习笔记12」
数据结构·算法
czxyvX7 天前
020-C++之unordered容器
数据结构·c++
岛雨QA7 天前
多路查找树「Java数据结构与算法学习笔记11」
数据结构·算法
AKA__Zas7 天前
初识基本排序
java·数据结构·学习方法·排序