问题标签 [sorting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
62 回答
1591355 浏览

java - 对地图进行排序按价值观

我对 Java 比较陌生,经常发现我需要对Map<Key, Value>值进行排序。

由于这些值不是唯一的,我发现自己将 转换keySet为,并使用自定义比较器array通过数组排序对该数组进行排序,该比较器对与键关联的值进行排序。

有没有更简单的方法?

0 投票
13 回答
11237 浏览

java - Sorting matched arrays in Java

Let's say that I have two arrays (in Java),

int[] numbers; and int[] colors;

Each ith element of numbers corresponds to its ith element in colors. Ex, numbers = {4,2,1} colors = {0x11, 0x24, 0x01}; Means that number 4 is color 0x11, number 2 is 0x24, etc.

I want to sort the numbers array, but then still have it so each element matches up with its pair in colors.

Ex. numbers = {1,2,4}; colors = {0x01,0x24,0x11};

What's the cleanest, simplest way to do this? The arrays have a few thousand items, so being in place would be best, but not required. Would it make sense to do an Arrays.sort() and a custom comparator? Using library functions as much as possible is preferable.

Note: I know the "best" solution is to make a class for the two elements and use a custom comparator. This question is meant to ask people for the quickest way to code this. Imagine being at a programming competition, you wouldn't want to be making all these extra classes, anonymous classes for the comparator, etc. Better yet, forget Java; how would you code it in C?

0 投票
13 回答
5224 浏览

algorithm - 稳定、高效的排序?

我正在尝试创建一个非常节省空间的不寻常的关联数组实现,我需要一个满足以下所有条件的排序算法:

  1. 稳定(不更改具有相同键的元素的相对顺序。)
  2. 就地或几乎就地(O(log n) 堆栈很好,但没有 O(n) 空间使用或堆分配。
  3. O(n log n) 时间复杂度。

还要注意,要排序的数据结构是一个数组。

很容易看出,有一个基本算法可以匹配这三个中的任何 2 个(插入排序匹配 1 和 2,合并排序匹配 1 和 3,堆排序匹配 2 和 3),但我一生都找不到任何符合所有这三个条件。

0 投票
6 回答
856 浏览

sorting - 对堆进行排序的最快方法(至少在理论上)是什么?

堆是一个列表,其中适用以下内容:

为了0 <= i < len(list)

我正在寻找就地排序。

0 投票
3 回答
14934 浏览

php - 如何使用 CodeIgniter 进行表格排序?

在过去的几周里,我一直在使用 CodeIgniter 作为框架开发一个网站。我一直在考虑完成某事的最佳方式,在其他语言的许多其他框架中,这相对简单:可排序表。CodeIgniter 默认关闭查询字符串,因为您的 URL 包含方法参数。因此 URL 可能如下所示:

您可能认为您可以将sortBysortOrder作为两个附加参数添加到控制器方法中。我不是特别想这样做,主要是因为我想要一个可重复使用的控制器。当您使用查询字符串参数时,PHP 可以很容易地告诉您是否有一个名为sortBy. 但是,当您使用基于 URL 的参数时,它会因每个控制器而异。

我想知道我的选择是什么。据我所见,它们类似于:

  • 传入我的sortBysortOrder参数,把它吸起来,然后为它开发一些不可重用的组件。
  • 有一个额外的控制器,它将sortBy和存储sortOrder在会话中(尽管它必须知道您来自哪里,并将您送回原始页面)。
  • 有某种 AJAX 函数,它会调用上面的控制器;然后重新加载页面。
  • 破解 CodeIgniter 以重新打开查询字符串。实际上,如果这是唯一的选择,那么任何有关如何执行此操作的链接都将不胜感激。

我简直不敢相信这么简单的任务会出现这样的问题!我错过了什么吗?有人有什么建议吗?

虽然我喜欢 jQuery,并且我已经在网站上使用它,但 TableSorter 是一个不错的选择。但是,我想做服务器端排序,因为有些页面可能有大量结果,包括分页。

0 投票
8 回答
33429 浏览

php - 如何对 UTF-8 字符串数组进行排序?

我目前不知道如何在 PHP 中对包含 UTF-8 编码字符串的数组进行排序。该数组来自 LDAP 服务器,因此通过数据库进行排序(没问题)不是解决方案。以下不适用于我的 Windows 开发机器(尽管我认为这至少应该是一个可能的解决方案):

输出是:

这完全是胡说八道。使用 1252 作为代码页setlocale()给出了另一个输出,但仍然是一个明显错误的输出:

有没有办法使用 UTF-8 字符串区域设置对数组进行排序?

刚刚注意到这似乎是 Windows 上的 PHP 问题,因为与de_DE.utf8used as locale 相同的片段在 Linux 机器上工作。尽管如此,这个Windows特定问题的解决方案会很好......

0 投票
7 回答
1492 浏览

c - 在 C 中对字符数组进行 alpha 排序的最简单方法是什么?

我正在寻找一种简单、易于理解的算法来按字母顺序对 C 中的字符数组进行排序。

0 投票
11 回答
51721 浏览

php - PHP中的对象排序

什么是在 PHP 中对对象进行排序的优雅方法?我很想完成类似的事情。

基本上指定我想要排序的数组以及我想要排序的字段。我研究了多维数组排序,那里可能有一些有用的东西,但我没有看到任何优雅或明显的东西。

0 投票
6 回答
45049 浏览

php - glob() - 按上次修改的日期时间戳对文件数组进行排序

我正在尝试按日期顺序显示一组文件(最后修改)。

我已经完成了这个购买循环遍历数组并将其排序到另一个数组中,但是有没有更简单(更有效)的方法来做到这一点?

0 投票
6 回答
7488 浏览

java - 合并大文件的算法

我有几个事件日志文件(每行一个事件)。日志可能会重叠。日志是在可能来自多个时区的单独客户端计算机上生成的(但我假设我知道时区)。每个事件都有一个标准化为公共时间的时间戳(通过使用适合日志文件的时区实例化每个日志解析器日历实例,然后使用 getTimeInMillis 获取 UTC 时间)。日志已经按时间戳排序。多个事件可以同时发生,但它们绝不是相等的事件。

这些文件可能比较大,例如单个日志中有 500000 个或更多事件,因此将日志的全部内容读入一个简单的 Event[] 是不可行的。

我正在尝试做的是将每个日志中的事件合并到一个日志中。这有点像一个合并排序任务,但每个日志都已经排序,我只需要将它们放在一起。第二个组件是可以在每个单独的日志文件中见证相同的事件,我想在文件输出日志中“删除重复事件”。

这可以“就地”完成吗,例如在每个日志文件的一些小缓冲区上按顺序工作?我不能简单地将所有文件读入 Event[],对列表进行排序,然后删除重复项,但到目前为止,我有限的编程能力只能让我将其视为解决方案。当我同时从每个日志中读取事件时,是否可以使用一些更复杂的方法来执行此操作?