算法第二章实践作业
1.找第k小的数本质上是先对数据进行大致排序在求k位元素,因此,先利用快排进行排序,找最左侧值作为基准值,进行快速排序,先存基准,然后由最右侧元素与基准元素比较看是否填入基准元素原位置,利用i++、j++,不断移动指针位置,实现基准元素定位,此为第一步分区。然后进入第二步判断第k小数与目前基准元素相对位置,判断接下来是左侧搜索还是右侧搜索的子问题。通过递归的到最终结果。
2.最好时间复杂度,其实应该是平均时间复杂度为O(n),最坏为O(n*n)。
3.问题可自然分解为独立子问题、合并逻辑清晰且总体复杂度有收益(如归并排序、快速排序、二分查找)。子问题越多、并行度越高,收益越大。

浙公网安备 33010602011771号