第二章作业

1,伪代码
function find(a, left, right, k):
if (left == right);
return a[left]
p = Partition(a, left, right)
leftLen = p - left + 1
if (k == leftLen)
return a[p];
else if k < leftLen:
return find(a, left, p-1, k)
else:
return find(a, p+1, right, k - leftLen);
2,在最好情况下,k直接等于 leftLen,时间复杂度为O(n);最坏情况下,每次选择的基准都使得左右两边的数组规模有很大差异,此时时间复杂度为O(n^2).

3,分治法通过不断划分数组,将问题拆解后,通过递归调用,分别求解再进行合并,从而降低时间复杂度。适用与归并和快速排序相关问题中,具有广泛的适用性。

posted @ 2026-10-12 18:56  吴睿捷  阅读(5)  评论(0)    收藏  举报