菠萝皮卡丘! 2023-03-23 00:11 采纳率: 20%
浏览 32
已结题

有100亿个数,找到10个最大整数,如何实现

复试问题,如何简单清晰的和导师表达,有多种方法最好,欢迎各位解答

  • 写回答

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更快。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月19日
  • 已采纳回答 8月11日
  • 创建了问题 3月23日

悬赏问题

  • ¥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 如何让子窗口鼠标滚动独立,不要传递消息给主窗口