Java中的并发排序

2024-04-07

我目前正在开发一个同时对字符串进行排序的程序。我的程序接收一个文件,将文件的每一行读入一个数组,并将字符串数组拆分为更小的字符串数组。然后,程序为每个较小的数组启动一个线程,并对它们进行快速排序。一旦每个线程完成对其数组的排序,主线程就会从线程对象收集所有结果。然后应该将较小的、现已排序的数组合并为一个大的、已排序的数组。

我知道我的快速排序实现是有效的——程序使用一个线程对单词进行排序。我需要的是一种将线程返回的数组嵌套在一起的算法。

如有任何帮助,我们将不胜感激——提前致谢。


从决赛开始merge的程序归并排序 https://en.wikipedia.org/wiki/Merge_sort。您读取每个 m 数组的第一个值(单个子数组的最小值),然后选择 m 个读取值中的最小值(全局最小值),将其推入结果中,然后从包含的数组中删除它或增加各自的索引加一。然后,迭代直到所有子数组都为空,或者所有索引都到达相应数组的末尾。

注意:如果您有一个非常大的数据集(它实际上用于处理这种情况),这可能会减少内存使用量,但由于分割成本(如果您复制子数组,则它会变成线性)和原始快速排序的性能可能会比原始快速排序差多线程开销。请考虑,当应用于大型数组时,就地合并排序会更节省空间。还要考虑一下,谁编写了您正在使用的快速排序,可能花了时间优化调用和分支执行。

这是基本的理论 CS,但请注意,您不能简单地通过使用并行性来降低计算复杂度,您只能得到一个线性加速度。最后,快速排序恰好达到了比较排序算法的平均复杂度下限:如果您想超越快速排序O(nlog(n))我有坏消息要告诉你。

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

Java中的并发排序 的相关文章

随机推荐

  • Postgres regr_slope 返回 NULL

    有人可以帮我了解一下情况吗regr slope数据集中有行时返回 NULL 例如 log gt select from sb1 order by id ts id elapsed ts 317e 86 1552861322 627 317e
  • Xcode 自定义字体未显示在 Storyboard 中

    我将两种字体添加到我的项目文件夹中 我将它们添加到 info plist 中 我在故事板的自定义字体列表中看不到它们 我做错了什么 我知道这是一个很老的问题 但我遇到了同样的问题 而且上述提示对我不起作用 除了标准检查 存在于捆绑包中 重新
  • Rspec 不删除 2 个特定表

    我正在使用 Rspec 来测试 Rails 应用程序 我有 2 个导入数据的表 测试数据库和开发数据库 整个应用程序依赖于表数据 这意味着整个功能是匹配 计算和测量该表中的数据并将其放入其他表中 因此 在测试时 删除这些表的数据是没有意义的
  • 为什么java没有byte类型后缀? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 独立验证表单片段

    我有一个非常大的表格 我以类似向导的方式将其分成四个部分 向导插件 智能向导 具有当前处于焦点的表单段 而其余 3 个段隐藏在 dom 中 我正在使用 jquery 验证插件来动态验证表单 问题是验证所显示的表单部分 仅当用户进入下一步时
  • 在 Eclipse 中找不到 run as junit test

    我在 Eclipse 中创建了一个这样的测试类 RunWith SpringJUnit4ClassRunner class ContextConfiguration locations classpath applicationContex
  • 初学者:Scala 2.10 中的 Scala 类型别名?

    为什么此代码无法编译并出现错误 未找到 值矩阵 从文档和一些 可能已经过时的 代码示例来看 这应该可行吗 object TestMatrix extends App type Row List Int type Matrix List Ro
  • 模板参数推导:哪个编译器在这里?

    考虑以下代码 template
  • 为什么 helm 不使用部署模板中定义的名称?

    即来自name Chart Name Values module5678 name pod below deployment yaml apiVersion apps v1 kind Deployment metadata labels a
  • 在启动时注册多个 DbContext 实例以在通用存储库中使用

    我正在尝试创建一个通用存储库 它接受 2 个通用类型 例如 public class EfRepository
  • 在 Azure 上部署 MEAN+Webpack

    如何部署 MEAN STACK WEBPAC 应用程序 我有一个 MEAN Stack Webpac 应用程序和 nodejs 服务器 提供其余api 我使用 webpack 开发服务器运行 Angular 应用程序 构建 webpack
  • QMessageBox::ritic 不显示标题文本

    我需要显示简单的错误消息 QMessageBox critical nullptr My Title Text 但出现的对话框的标题为空 我做错了什么 PS 操作系统 MacOS 10 9 1 你没有做错什么 从QMessageBox se
  • Silverlight 应用程序中的跨线程访问无效

    我正在使用 Hammock 框架从 Silverlight 应用程序到 Rest 服务进行异步服务调用 在 完成 回调中 我正在更新绑定到视图上组合框的 ObservableCollection OnPropertyChanged 事件处理
  • Spring AMQP RabbitMQ 如何直接发送到Queue而不需要Exchange

    我正在使用 Spring AMQP 和 Rabbitmq 模板 如何直接将消息发送到队列而不使用Exchange 我该怎么做 我该怎么做 你不能 发布者不知道队列 只是交换和路由密钥 但是 所有队列都绑定到默认交换器 以队列名称作为其路由键
  • 将列名称文本包装在 R 中的 ggpairs 中

    我正在使用 ggpairs 在绘制矩阵时 我收到一个矩阵 如下所示 正如您所看到的 某些文本长度很大 因此文本看不完整 无论如何 我可以将文本换行 使其完全可见吗 Code ggpairs df 我希望文本换行 以便可以看到类似这样的内容
  • 如何在 Angular 6 中设置日期格式?

    我有一个功能 可以显示用户输入的实时日期 现在当用户输入输入时 我在前端显示 日期 28 10 2018 10 09 我希望更改日期 如果是过去几天 过去一周 过去一年等 因此 如果昨天输入了输入 我想显示如下内容 1d意思是一天前 一年也
  • 使用heroku上传文件

    据我所理解heroku http heroku com不允许存储单个 Rails 应用程序的上传文件 在他们的文档中 他们提到文件可以上传到亚马逊S3 http aws amazon com s3 实例 我目前没有 S3 帐户 因此假设我只
  • 使用 CLI 通过 docker-compose 部署到 Azure 时,访问代理页面时超时

    I have docker compose file version 3 services app2 image kamilwit dockerdocker app2 container name app2 build context ap
  • 设置标题和 v7 抽屉切换之间的间距

    我现在正在使用 v7 支持库的 ActionBarDrawerToggle 但抽屉图标直接位于标题字体处 因为我禁用了 showHomeEnabled 如何在标题和切换开关之间设置更多可用空间 Thanks 事实上 遗憾的是这并不能真正实现
  • Java中的并发排序

    我目前正在开发一个同时对字符串进行排序的程序 我的程序接收一个文件 将文件的每一行读入一个数组 并将字符串数组拆分为更小的字符串数组 然后 程序为每个较小的数组启动一个线程 并对它们进行快速排序 一旦每个线程完成对其数组的排序 主线程就会从