node.js - 在 NodeJs 中合并一个非常大的列表的最佳方法是什么?

标签 node.js sorting merge redis heapsort

我正在 NodeJS 中制作一个 api 爬虫应用程序,它同时对多个 rest api 进行并行调用。这些 rest api 调用中的每一个都返回一个排序的对象列表。这些列表可能很大。现在我必须将它们合并成一个大的排序列表并将其作为我的响应返回。

每次 api 调用完成后,我将结果存储在 redis 中,当所有完成后,我使用堆排序算法进行合并。这是空间和时间效率方面的最佳方式吗?

另一种我可以做到这一点的方法是简单地从合并排序中执行合并算法。什么是最佳方法?

最佳答案

Merge sorted arrays method (O(n1 + n2) Time and O(n1 + n2) Extra Space)

思路是利用Merge排序的Merge函数

  • 创建一个大小为 n1 + n2 的数组 arr3[]。
  • 同时遍历 arr1[] 和 arr2[]。
  • 在 arr1[] 和 arr2[] 中选择较小的当前元素,复制这个 较小的元素到 arr3[] 中的下一个位置并在 arr3[] 中向前移动 以及其元素被选中的数组。
  • 如果arr1[]或arr2[]中还有剩余元素,则复制它们 也在 arr3[].

关于node.js - 在 NodeJs 中合并一个非常大的列表的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50066711/

相关文章:

javascript - Expressjs4路由错误

r - 连接 data.frame 或 data.table 中的匹配列

javascript - 代理请求超过时间提供错误

java - 在Java中对匹配的数组进行排序

javascript - 如何使用 PHP 在 Google 表格图表中排序日期?

javascript - 按类对 li 元素进行排序? jQuery/Javascript

vba - 合并每一行的单元格

java - 使用 Java 合并 2 个 AAC 文件

node.js - 在通用/同构应用程序中组织 package.json 依赖项

node.js - 试图理解 "Since Electron is very likely to use a different V8 version"的解释