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

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

1-前言

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

2-线性代数-题目



3-线性代数-参考答案



4-数据结构-题目

【問題1】ハッシュ法と衝突処理

要素数 (n) 個のデータ (x_1, x_2, \ldots, x_n) を管理するために,

配列サイズ (m) のハッシュ表を用い,

ハッシュ関数

h(x) = x \\bmod m

によってデータを格納するものとする。

衝突処理として チェイン法を用いる場合について,次の問いに答えよ。

(1)ハッシュ関数に衝突が発生していない場合の探索に要する最悪時間計算量を,

要素数 (n) を用いてオーダー記法で答えよ。

(2)すべての要素が同一のハッシュ値を取る場合の探索に要する最悪時間計算量を,

要素数 (n) を用いてオーダー記法で答えよ。

(3)上記(2)の場合において,ハッシュ法が探索アルゴリズムとして有効であると言えない理由を簡潔に説明せよ。

※ 陷阱:**「平均」ではなく「最悪」**を正しく答えられるか


【問題2】連結リストの実装と操作

単方向連結リストを用いて,

要素 (x_1, x_2, \ldots, x_n) を格納する線形リストを実装する。

以下の 2 つの実装方法を考える。

  • 実装方法A:先頭要素へのポインタのみを保持する。
  • 実装方法B:先頭要素および末尾要素へのポインタを保持する。

次の問いに答えよ。

(1)実装方法Aにおいて,末尾に新しい要素を追加する操作の最悪時間計算量を,

要素数 (n) を用いてオーダー記法で答えよ。

(2)実装方法Bにおいて,末尾に新しい要素を追加する操作の最悪時間計算量を,

要素数 (n) を用いてオーダー記法で答えよ。

(3)実装方法Bが,キューの実装に適している理由を簡潔に説明せよ。

※ 陷阱:「連結リストの種類」ではなく「操作コスト」を問う


【問題3】再帰処理と連結リスト

先頭要素へのポインタをそれぞれ list1list2 として保持する

2 つの単方向連結リストがある。

両リストは,要素の値が降順に整列されているものとする。

次の擬似コードが与えられた。

复制代码
function merge(list1, list2) {
  if (list1 == NULL) return list2
  if (list2 == NULL) return list1
  if (list1.val >= list2.val) {
    list1.next = merge(list1.next, list2)
    return list1
  } else {
    list2.next = merge(list1, list2.next)
    return list2
  }
}

(1)この関数の処理内容を簡潔に説明せよ。

(2)list1 の要素数を (n),list2 の要素数を (m) としたとき,

この関数の最悪時間計算量をオーダー記法で答えよ。

※ 陷阱:再帰=指数時間と誤解しやすい


【問題4】ソートアルゴリズムと安定性

要素数 (n) の配列をソートするアルゴリズムについて考える。

次の問いに答えよ。

(1)ソートアルゴリズムが「安定である」とはどういう性質を持つことか,簡潔に説明せよ。

(2)最悪時間計算量が (O(n^2)) であり,かつ安定なソートアルゴリズムの例を 1 つ挙げ,その理由を簡潔に説明せよ。

(3)最悪時間計算量が (O(n \log n)) であり,かつ安定なソートアルゴリズムの例を 1 つ挙げよ。

※ 陷阱:計算量だけ合っていて安定性を間違える


5-数据结构-参考答案

問題1:ハッシュ法


(1)O(1)

判定

正确

模范答案(保持即可)

衝突が起きていない場合,探索に要する最悪時間計算量は O(1) である。


(2)O(n)

判定

正确

模范答案

すべての要素が同一のハッシュ値を取る場合,探索に要する最悪時間計算量は O(n) である。


(3)理由说明

你的原答案(问题点)

  • 思路
  • ❌ 日语不够学术
  • ❌ 没有明确说「ハッシュ法の利点が失われる」

⭐ 满分标准答案(直接背)

すべてのデータが同一のハッシュ値に写像される場合,

すべての要素が 1 つのチェインに格納されるため,

探索は連結リストと同様の処理となる。

その結果,探索時間は O(n) となり,

ハッシュ法の高速な探索という利点が失われる。


問題2:連結リストとキュー


(1)O(n)

判定

正确

模范答案

実装方法Aでは末尾要素への直接的な参照を持たないため,

末尾に要素を追加するには先頭から探索する必要があり,

最悪時間計算量は O(n) である。


(2)O(1)

判定

正确


(3)理由说明

你的原答案(问题点)

  • ❌「同じ方法です」不够
  • ❌ 没明确提 enqueue / dequeue

⭐ 满分标准答案

キューは先入先出(FIFO)のデータ構造であり,

末尾への追加と先頭からの削除を効率的に行う必要がある。

実装方法Bでは,先頭および末尾の両方へのポインタを保持するため,

これらの操作を O(1) で実現できる。


問題3:再帰と連結リスト


(1)処理内容说明

你的原答案(严重扣分点)

  • ❌ 说明太模糊
  • ❌ 没说这是「整列済みリストのマージ」
  • ❌「算法」是中文

⭐ 满分标准答案(非常重要)

この関数は,

降順に整列された 2 つの単方向連結リストを比較しながら,

要素の値が大きい方を先頭とする新たな連結リストを再帰的に生成する処理である。

すなわち,2 つの整列済み連結リストを 1 つの整列済み連結リストに統合する。


(2)O(n + m)

判定

正确

模范答案

各要素は 1 回ずつ比較されるため,

最悪時間計算量は O(n + m) である。


問題4:ソート


(1)安定性的定义

你的原答案(❌ 错)

  • ❌ 题目问的是定义
  • ❌ 你回答成了某种算法的特征

⭐ 正确答案(必背)

ソートアルゴリズムが安定であるとは,

値が等しい要素が複数存在する場合において,

ソート前後でそれらの要素の相対的な順序が保持される性質をいう。


(2)O(n²) & 安定

判定

选择正确(挿入ソート)

表达升级版

挿入ソートは,

要素を順に挿入する際に等しい値の要素の順序を変更しないため安定であり,

最悪時間計算量は O(n²) である。


(3)O(n log n) & 安定

判定

正确

模范答案

マージソート


🎯 总评(立命馆视角)

项目 评价
思路 ✅ 非常扎实
计算量判断 ✅ 全对
扣分点 ❌ 日语定义表达
当前得分 70~75%
修正后 稳 90%+

6-总结

训练成长。!!

相关推荐
西岸行者2 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意2 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码2 天前
嵌入式学习路线
学习
毛小茛3 天前
计算机系统概论——校验码
学习
babe小鑫3 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms3 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下3 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。3 天前
2026.2.25监控学习
学习
im_AMBER3 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J3 天前
从“Hello World“ 开始 C++
c语言·c++·学习