(算法)从10000个数中找出最大的10个

2023-11-09

  从10000个整数中找出最大的10个,最好的算法是什么?

算法一:冒泡排序法

  千里之行,始于足下。我们先不说最好,甚至不说好。我们只问,如何“从10000个整数中找出最大的10个”?我最先想到的是用冒泡排序的办法:我们从头到尾走10趟,自然会把最大的10个数找到。方法简单,就不再这里写代码了。这个算法的复杂度是10N(N=10000)。

算法二:

  有没有更好一点的算法呢?当然。维持一个长度为10的降序数组,每一个从数组拿到的数字都与这个降序数组的最小值比较。如果小于最小值,就舍弃;如果大于最小值,就把它插入到降序数组中的合适位置,舍弃原来的最小值。这样,遍历一遍就可以找到最大的10个数。因为需要在降序数组中插入一个数,对于遍历的每个数可能都需要这样,所以其复杂为5N。

  伪代码如下:

  A[N],a[m](分别为原始数组和降序数组,其中N=10000,m=10)

  a = A[0 ... 9](将数组A的前10个数赋给数组a)

  sort a(将组数a降序排序)

  for i in A[ 10 ... N](从10到N遍历数组A)

    if A[i] > a[9] then (如果当前值比降序数组中的最小值大)

      删除a[9]

      将A[i]插入a的合适位置,使a保持降序

    end if

  end for

  输出数组a

  其实算法二还有一个优点,就是当数组很大时,可以将数据分段读入内存处理,而这样做并不影响结果。

  你还有什么办法?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(算法)从10000个数中找出最大的10个 的相关文章

  • Python3模拟用另一个函数替换函数

    如何使用 python 中的另一个函数来模拟一个函数 该函数也将提供一个模拟对象 我有类似以下操作的代码 def foo arg1 arg2 r bar arg1 does interesting things 我想替换的实现bar函数 让
  • 检查对象数组中的多个属性匹配

    我有一个对象数组 它们都是相同的对象类型 并且它们有多个属性 有没有办法返回一个较小的对象数组 其中所有属性都与测试用例 字符串匹配 无论该属性类型是什么 使用列表理解all http docs python org 3 library f
  • 如何在Python中正确声明ctype结构+联合?

    我正在制作一个二进制数据解析器 虽然我可以依靠 C 但我想看看是否可以使用 Python 来完成该任务 我对如何实现这一点有一些了解 我当前的实现如下所示 from ctypes import class sHeader Structure
  • 将带有两层分隔符的字符串转换为字典 - python

    给定一个字符串 s x t1 ny t2 nz t3 我想转换成字典 sdic x 1 y 2 z 3 我通过这样做让它工作 sdic dict tuple j split t for j in i for i in s split n F
  • 散景中的时间序列流

    我想在散景中绘制实时时间序列 我只想在每次更新时绘制新的数据点 我怎样才能做到这一点 散景网站上有一个动画情节的示例 但它每次都需要重新绘制整个图片 另外 我正在寻找一个简单的示例 我可以在其中逐点绘制时间序列的实时绘图 散景效果0 11
  • 将 ASCII 字符转换为“”unicode 表示法的脚本

    我正在对 Linux 区域设置文件进行一些更改 usr share i18n locales like pt BR 并且需要格式化字符串 例如 d m Y H M 必须以 Unicode 指定 其中每个 在本例中为 ASCII 字符表示为
  • Scrapy - 不会爬行

    我正在尝试运行递归爬行 由于我编写的爬行不能正常工作 因此我从网络上提取了一个示例并进行了尝试 我真的不知道问题出在哪里 但是爬行没有显示任何错误 谁能帮我这个 另外 是否有任何逐步调试工具可以帮助理解蜘蛛的爬行流程 非常感谢任何与此相关的
  • 写入 UDP 套接字会被阻塞吗?

    如果是的话 在什么条件下 或者 换句话说 在twisted 中运行此代码是否安全 class StatsdClient AbstractStatsdClient def init self host port super StatsdCli
  • 如何使用 python-gnupg 加密大型数据集而不占用所有内存?

    我的磁盘上有一个非常大的文本文件 假设它是 1 GB 或更多 还假设该文件中的数据有 n每 120 个字符一个字符 我在用python gnupg https pythonhosted org python gnupg 对此文件进行加密 由
  • 优雅地避免 Java 中的 NullPointerException

    考虑这一行 if object getAttribute someAttr equals true 显然这一行是一个潜在的错误 属性可能是null我们会得到一个NullPointerException 因此我们需要将其重构为以下两个选择之一
  • 通过子类化 `io.TextIOWrapper` 来子类化文件 - 但它的构造函数有什么签名?

    我正在尝试子类化io TextIOWrapper下列的这个帖子 https stackoverflow com a 23796737 974555 虽然我的目标不同 以此开始 注意 动机 https stackoverflow com a
  • python 的 fcntl.flock 函数是否提供文件访问的线程级锁定?

    Python 的 fcnt 模块提供了一种名为 flock 1 的方法来证明文件锁定 其描述如下 对文件执行锁定操作op 描述符 fd 文件对象提供 fileno 方法被接受为 出色地 请参阅 Unix 手册集群 2 了解详情 在某些系统上
  • 如何在 Pandas 数据框中用 NaN 替换一系列值?

    我有一个巨大的数据框 我应该如何用 NaN 替换一系列值 200 100 数据框 您可以使用pd DataFrame mask https pandas pydata org pandas docs stable generated pan
  • python IDLE shell 似乎无法正确处理一些转义

    例如 b 退格键打印为四元 在下面的示例中显示为 但是 n 换行是可以的 gt gt gt print abc bd abc d gt gt gt print abc nd abc d 我在 Vista pro python 2 7 下运行
  • 与手动搜索列表相比,Collections.binarySearch 的性能如何?

    我想知道该使用哪一个 我有一份学生名单 我想用他的名字搜索一个学生 到目前为止 我是通过迭代列表手动完成的 如下所示 for int i 0 i lt list size i Student student list get i if st
  • 如何指定一个变量作为类或类实例的成员变量?

    在最新的 Python 2 7 x 中 给定类定义内的任何成员变量 该成员变量是否始终处于类级别 因为它是由该类的所有实例共享的单个变量 在类的定义中 如何指定 类定义中的哪些成员变量属于该类 因此由该类的所有实例共享 以及 哪些属于该类的
  • 如何获取所有Python标准库模块的列表?

    我想要类似的东西sys builtin module names标准库除外 其他不起作用的事情 sys modules 只显示已经加载的模块 sys prefix 包含非标准库模块并且似乎无法在 virtualenv 内工作的路径 我想要这
  • 使用Python的timeit获取“全局名称'foo'未定义”

    我想知道执行一条Python语句需要多少时间 所以我上网查了一下 发现标准库提供了一个名为timeit http docs python org library timeit html旨在做到这一点 import timeit def fo
  • 获取长度为 n 的所有(n-选择-k)组合

    我怎样才能获得长度的所有组合 按顺序 n从数字列表中 例如 给定列表 1 2 3 4 并设置n 3 我怎样才能得到这些结果 1 2 3 1 2 4 1 3 4 2 3 4 For combinations of all possible l
  • 将笔记本生成的 HTML 片段转换为 LaTeX 和 PDF

    在我的笔记本里有时会有 from IPython display import display HTML display HTML h3 The s is important h3 question of the day 但当我后来将笔记本

随机推荐

  • 注册ChatGPT时提示Oops! The email you provided is not supported

    问题描述 今天本想出一个ChatGPT的注册与使用的教程 结果上来吃了个闭门羹 之前我通过微软账号登录验证是没有问题的 但这次想使用另一个微软账号 结果提示Oops The email you provided is not support
  • JDBC编程的六大步骤

    1 注册驱动 把驱动程序类加载到内存中 利用反射机制 这里是利用反射机制去加载某个类的特性 并不是要获取这个镜像对象来操作 加载这个类就会让这个类中的static 被执行 这个静态代码块中的代码就是注册驱动的代码 String driver
  • top5数据高级分析必备的Python库

    top5数据高级分析必备的Python库 1 Pandas 2 Numpy 3 Matplotlib https blog csdn net qq 40985985 article details 119676953 4 Scikit 学习
  • 【 Python 全栈开发 - 语法基础篇 - 19 】模块和包

    文章目录 一 模块 二 包 在 Python 中 模块指的是一个包含 Python 代码的文件 它可以被其他 Python 程序导入和使用 模块通常包括一些函数 类和变量 可以用于执行特定的任务或实现特定的功能 而包指的是一个包含多个模块的
  • 抖音短视频矩阵系统多账号管理,功能框架及开发逻辑

    目录 文章目录 前言 一 矩阵号系统是什么 二 使用步骤 1 创建推广项目 2 多账号授权 3 企业号智能客服系统 总结 前言 短视频多账号矩阵系统 通过多账号一键授权管理的方式 为运营人员打造功能强大及全面的 矩阵式 管理平台 使用矩阵系
  • MOS管、BJT 饱和区 不同

    1 深刻理解并记住工作在开关状态下 两种器件工作在何种工作区 三极管 从左到右 依次为 饱和 放大 截至 开关状态下是工作在截至与饱和区之间 MOS 从左到右 依次为可变电阻 非饱和区 完全导通区 饱和 横流区 放大区 有源区 线性区 截至
  • Vue3报错Property “xxx“ was accessed during render but is not defined on instance.

    使用Vue3重构自己项目时遇到报错 Property xxx was accessed during render but is not defined on instance 碰到这个报错已经不是一次两次了 写篇文章记录一下 翻译 Pro
  • 软件缺陷的管理

    目录 1 软件缺陷产生的原因 1 1 需求不明确 1 2 软件结构复杂 1 3 编码问题 1 4 项目期限太短 1 5 使用新技术 2 软件缺陷的分类 2 1 从测试种类划分缺陷 2 2 从缺陷严重程度划分 2 3 从缺陷的优先级划分 2
  • 【计算机视觉

    文章目录 一 检测相关 18篇 1 1 Neural Network Training Strategy to Enhance Anomaly Detection Performance A Perspective on Reconstru
  • Ubuntu更换源-清华大学源

    文章目录 前言 备份原来的源 更换源 更新源 前言 安装好ubuntu系统后 默认的软件更新源是国外的 在国内使用速度很慢 安装软件时可能出现 各种各样的错误 所以我们需要更换成国内的源 这样才能更快更安全的安装和更新软件 此次我们选用的是
  • scratch 鼠标控制角色移动

    scratch 鼠标控制角色 本程序使用鼠标操作 机器人 角色跟随鼠标 距离较小时暂停移动 小狗 角色连续在随机位置生成 水平移动 碰到边缘反弹 碰到 机器人 角色时删除 目前scratch程序的制作已经告一段落了 进一步开发需要更多规划
  • 多路ADC的采集——stm32

    在对实际应用过程中 ADC的采集大多是多个通道同时采集的 比如同时采集多个传感器的数据 就可能需要我们配置多个通道的ADC采集了 而多通道的ADC采集大多用到了DMA 笼统的讲通过DMA来传输数据不经过CPU 可以有效的为CPU减负 我们在
  • Linux开发工具

    目录 Linux 软件包管理器 yum 如何安装软件 如何卸载软件 Linux编辑器 vim使用 1 vim的基本概念 2 vim的基本操作 3 vim正常模式命令集 4 vim末行模式命令集 5 vim操作总结 7 一些小指令 Linux
  • TypeError:__init__() got an unexpected keyword argument ‘xxx‘

    检查一下通常是某个关键字打错了
  • 排序算法:冒泡排序

    基本思想 相邻的两个元素进行比较 按照要求进行交换 思路 以升序为例 进行第一趟排序 第一个元素和第二个元素进行比较 将较大的放在第二个元素的位置上 然后第二个和第三个元素进行比较 将较大的放在第三个元素的位置上 依次类推 直到 第一趟排序
  • 2023.05-B卷-华为OD机试 - 阿里巴巴找黄金宝箱(I)-”新加题型“(100分值)

    www codefun2000 com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据 挂载到我们的OJ上 供大家学习交流 体会笔试难度 现已录入200 道互联网大厂模拟练习题 还在极速更新中 欢迎关注公众号 塔子哥学算
  • 提高代码质量之静态代码检查

    http www jianshu com p 2b8d34b2267c 前言 在团队Android项目开发过程中 难免会出现一些比较不容易发现 但是又比较低级的bug 而且因为每个开发人员的编码习惯不同 写出的代码也会有差异 为了保证团队开
  • Java小程序简易多客户端聊天服务器

    前言 最近在上JAVA课时学习了多线程有关知识 结合之前的练习 自己试着写了个多客户端聊天器 现放在这里 希望能对各位同袍有所帮助 注意为了防止抄袭 以下仅放出Client和Server部分 对于信息部分没有发上来 不过主要难点都在已发上来
  • 【项目设计】高并发内存池(五)[释放内存流程及调通]

    C 学习历程 入门 博客主页 一起去看日落吗 持续分享博主的C 学习历程 博主的能力有限 出现错误希望大家不吝赐教 分享给大家一句我很喜欢的话 也许你现在做的事情 暂时看不到成果 但不要忘记 树 成长之前也要扎根 也要在漫长的时光 中沉淀养
  • (算法)从10000个数中找出最大的10个

    从10000个整数中找出最大的10个 最好的算法是什么 算法一 冒泡排序法 千里之行 始于足下 我们先不说最好 甚至不说好 我们只问 如何 从10000个整数中找出最大的10个 我最先想到的是用冒泡排序的办法 我们从头到尾走10趟 自然会把