- 0
- 0
- 约1.3千字
- 约 2页
- 2026-07-12 发布于北京
- 举报
本小节内容
2022年42题题目解析
42.(10分)
现有n(n100000)个数保存在一维数组M中,需要查找M中最小的10个数,请回
答下列问题。
⑴设计一个完成上述查找任务的算法,要求平均情况下的比较次数尽可能少,简单描述
其算法思想,不需要程序实现。
⑵说明你所设计的算法平均情况下的时间复杂度和空间复杂度。
解析:
这道题非常有代表性,我们3种解题思路,从而对我们前面学习的排序算法能有更深
的理解。
方法一:最小值(选择排序思想)
(1)算法思想(高教社)
定义含10个元素的数组A,初始时元素值均为该数组类型能表示的最大数MAX。
forM中的每个元素s
if(sA[9])丢弃A[9]并将s按升序到A中;(排序的算法)
当数据全部扫描完毕,数组A[0]~A[9]保存的即是最小的10个数。
(2)时间复杂度:O(n),每次要时都是需要对小数组A进行遍历的
空间复杂度:O(1),中间过程额外需要常数个变量。
如果这里将10修改为k,则:
时间复杂度:O(nk),需要遍历k次数组。
空
原创力文档

文档评论(0)