ソートアルゴリズムは色々とありますが、
普通にソートをすれば、あとは k 番目に小さい値を取れば終了です。
例えばリストをクイックソートをして、k 番目に小さい値を取るというのは簡単そうです。
これも再帰を使っています。
ただ、恐らく題意としては、
二分ヒープを使って欲しいのかなと推測しています。
なぜなら全部をソートしなくても k 番目に小さい値を取れるので、
全てをソートするのに比べて、計算量が少し少なくて済むからです。
リストを heapify して、そのあと heappop を k 回せばいけますね。
heapify, heappop 共に再帰を使用しています。
python
1#
2# 対話モード >>> にコピペで
3# 実行できます。
4#
5from heapq import heapify, heappop
6heap = [3, 9, 4, 1, 6, 8, 0, 5, 2, 7]
7
8# heapify
9heapify(heap)
10
11# heappop
12k = 3
13for _ in range(k - 1):
14 heappop(heap)
15
16print(heappop(heap))
>>> print(heappop(heap))
2
>>>
ソースコードは、ここ。
ソースコードの解説は、ここ。
ただこれだけでは説明が足りないかなと思います。
友達に相談して、乗り切ってください笑