算法第二章实践作业

1.寻找第k小的数不需要排序,只需要在这个数列中找到有哪个数有k-1个数比它小。运用快速排序的分区思想,从数组中选择一个元素作为枢轴,将所有小于枢轴的数都放在其左侧,所有大于枢轴的数都放在其右侧。若该枢纽的索引为k-1,则刚好为第k小的数。若该枢纽的索引小于k-1,则从枢纽的右边(x+1, right)递归查找。若该枢纽的索引大于k-1,则从枢纽的左边(left, x)递归查找
2.最好时间复杂度:每次递归都把n个问题拆分为n/2个,T(n)=T(n/2)+O(n),得时间复杂度为O(n)
最坏时间复杂度:每次递归都选中最大或最小的元素,T(n)=T(n-1)+O(n),得时间复杂度为O(n^2)
3.分治法的核心思想是“分而治之”,将复杂问题分解为相互独立的子问题,通过递归求解后再合并结果。在此次的学习中,我学会了“分而治之”的思想,它教会我将复杂问题分解,逐个击破。通过本章学习,我深刻理解了算法设计中的分治思想,以及如何通过主定理分析算法的时间复杂度。

posted @ 2025-11-02 11:14  hhhhhhh$^#  阅读(3)  评论(0)    收藏  举报