复试问题,如何简单清晰的和导师表达,有多种方法最好,欢迎各位解答
3条回答 默认 最新
- Alex、WY 2023-03-23 02:17关注
提供三种不同的方法来找到100亿个数中的前10个最大整数:
方法1: 快速排序
对100亿个数进行快速排序;
选择排序后的前10个数字。
这种方法的时间复杂度为O(NlogN),其中N为100亿。方法2: 堆排序
创建一个最小堆,并将前10个数字添加到堆中;
遍历剩余数字,如果数字大于堆顶的数字,则将其替换堆顶,并调整堆;
遍历完所有数字后,堆中存储的就是前10个最大的数字。
这种方法的时间复杂度为O(NlogK),其中N为100亿,K为10。方法3: 分治法
将100亿个数字划分为若干个小块,每个小块包含若干个数字;
对每个小块中的数字进行快速排序,选择排序后的前10个数字;
将每个小块中选择出的数字组成一个数组,对这个数组进行快速排序,选择排序后的前10个数字。
这种方法的时间复杂度为O(NlogM + MlogM),其中N为100亿,M为划分的小块数。这些方法中,方法2和方法3通常比方法1更快。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 找一个QT页面+目标识别(行人检测)的开源项目
- ¥15 有没有整苹果智能分拣线上图像数据
- ¥20 有没有人会这个东西的
- ¥15 cfx考虑调整“enforce system memory limit”参数的设置
- ¥30 航迹分离,航迹增强,误差分析
- ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败
- ¥15 用Ros中的Topic通讯方式控制小乌龟的速度,走矩形;编写订阅器代码
- ¥15 LLM accuracy检测
- ¥15 pycharm添加远程解释器报错
- ¥15 如何让子窗口鼠标滚动独立,不要传递消息给主窗口