问题标签 [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 投票
7 回答
2606 浏览

c# - 如何仅使用一个额外的整数变量对整数列表进行排序?

如何仅使用一个变量对值列表进行排序?

编辑:根据@Igor 的评论,我重新命名了这个问题。

0 投票
2 回答
4282 浏览

sorting - 如何使用批处理文件实现快速排序?

虽然通常总是为工作选择正确的语言是件好事,但有时尝试用一种非常不合适的语言做某事可能是有益的。

  1. 它可以帮助您更好地理解问题。也许您不必像您认为的那样解决它
  2. 它可以帮助您更好地理解语言。也许它支持的功能比您意识到的要多。

并将这个想法推向不合逻辑的结论......你将如何在批处理文件中实现快速排序?甚至可能吗?

0 投票
2 回答
63580 浏览

matlab - 如何在 MATLAB 中针对一列对二维数组进行排序?

我想根据特定列对矩阵进行排序。有一个sort函数,但它独立地对所有列进行排序。

例如,如果我的矩阵data是:

然后所需的输出(按第一列排序)将是:

但输出sort(data)是:

如何按第一列对该矩阵进行排序?

0 投票
2 回答
150 浏览

oop - 对任务列表进行排序的最佳位置

我正在构建一个 Web 应用程序,它是一个流程管理应用程序。将向几种不同的员工类型显示要执行的任务列表,当每个人完成一项任务时,它就会转移到下一位要处理的员工。

任务层次结构是批处理 > 加载 > 装配 > 零件 > 任务。目前有 8 条规则可用于确定每种员工类型应首先处理的任务。这些规则适用于零件的大小,以及零件完成将如何影响层次结构,例如,如果 A 部分完成,那么它会完成整个批次,而 B 部分不会,因为在其批次中还有其他部分要完成。

无论如何,这就是系统如何工作的电梯间距。我想弄清楚的是一种有效、快速和可维护的方法,考虑到规则可能会改变并且可能会添加更多规则。

最初我打算让数据库(sql 2005)完成所有繁重的工作,但我担心更复杂的规则很难用数据库实现。因此,另一种方法是将任务列表提取到中间层并创建对象集合并将每个规则应用于集合。我毫不怀疑每个规则都可以单独转换为 T-SQL,但根据任务类型按多达 8 个标准排序感觉很麻烦。

我可以看到中间层方法的一个好处是我可以创建一个限制更松散的系统,其中可以更改任务流,我认为这在数据库中会更加困难。

那么大家会推荐什么呢?有没有我没有想到的第三种选择?

编辑[1] 只是为了进一步说明这一点,预计数据库不会改变我最初开发它的方式。

0 投票
7 回答
15821 浏览

sql-server - 将 nvarchar 列排序为整数

我在 nvarchar 列(单词和数字)中有混合数据。这是按数字顺序对该列中的数据进行排序的最快方法。

结果示例:

  • 1
  • 2
  • 3
  • ...
  • 10
  • 11
  • ...
  • 啊啊啊
  • aaab
  • b
  • ...
0 投票
6 回答
1942 浏览

algorithm - 近排序算法 - 何时使用?

我不时浏览网络并寻找有趣的算法和数据结构来放入我的技巧包中。一年前,我遇到了Soft Heap数据结构并了解了近似排序。

这背后的想法是,如果您可以接受排序算法作弊的事实,则可以打破基于比较的排序的 O(n log n) 障碍。你得到一个几乎排序的列表,但你也必须忍受一些错误。

我在测试环境中玩弄了这些算法,但从未找到它们的用途。

所以问题是:有没有人在实践中使用过近似排序?如果是在哪种应用程序中?你能想出一个用例,其中接近排序是正确的做法吗?

0 投票
14 回答
61426 浏览

bash - 如何使用 bash “就地”执行任何编辑其文件(参数)的命令?

我有一个文件 temp.txt,我想用sortbash 中的命令对其进行排序。

我希望排序结果替换原始文件。

例如,这不起作用(我得到一个空文件):

这可以在一行中完成而无需复制到临时文件吗?


编辑:该-o选项对于sort. 我sort以我的问题为例。我在使用其他命令时遇到了同样的问题:

有更好的通用解决方案吗?

0 投票
15 回答
73912 浏览

sql - SQL 存储过程中的动态排序

这是我过去花费数小时研究的问题。在我看来,现代RDBMS解决方案应该解决的问题,但到目前为止,我还没有发现任何东西可以真正解决我认为在任何具有数据库后端的 Web 或 Windows 应用程序中非常普遍的需求。

我说的是动态排序。在我的幻想世界中,它应该像这样简单:

这是新手 SQL 和存储过程开发人员在 Internet 上的各个论坛上给出的典型示例。“为什么这不可能?” 他们问。ORDER BY总是有人最终过来向他们讲授存储过程的编译性质、一般的执行计划,以及不能将参数直接放入子句的各种其他原因。


我知道你们中的一些人已经在想什么:“那么让客户进行分类吧。” 自然地,这会从您的数据库中卸载工作。不过,在我们的案例中,我们的数据库服务器在 99% 的时间里都没有出过汗,它们甚至还不是多核的,也不是每 6 个月对系统架构进行的任何其他无数改进。仅出于这个原因,让我们的数据库处理排序不会有问题。此外,数据库非常善于分类。他们针对它进行了优化,并且多年来一直在做正确的事情,执行它的语言非常灵活、直观和简单,最重要的是任何初学者 SQL 编写者都知道如何去做,更重要的是他们知道如何编辑它,进行更改,进行维护等。当您的数据库远没有被征税并且您只想简化(并缩短!)开发时间时,这似乎是一个明显的选择。

然后是网络问题。我玩过 JavaScript 可以对 HTML 表进行客户端排序,但它们不可避免地不够灵活,无法满足我的需求很难证明重写或滚动我自己的 JavaScript 排序器所花费的时间是合理的。服务器端排序通常也是如此,尽管它可能已经比 JavaScript 更受欢迎。我不是特别喜欢 DataSets 开销的人,所以起诉我。

但这又带回了不可能的观点——或者更确切地说,不容易。在以前的系统中,我已经完成了一种令人难以置信的动态排序方式。它既不漂亮,也不直观、简单或灵活,并且初学者 SQL 编写者会在几秒钟内迷失方向。这已经不是一个“解决方案”,而是一个“并发症”。


以下示例并不意味着展示任何最佳实践或良好的编码风格或任何东西,也不代表我作为 T-SQL 程序员的能力。它们就是它们,我完全承认它们令人困惑,形式不好,而且只是简单的黑客攻击。

我们将一个整数值作为参数传递给存储过程(让我们将参数称为“排序”),并从中确定一堆其他变量。例如...假设 sort 为 1 (或默认值):

您已经可以看到,如果我声明更多 @colX 变量来定义其他列,我真的可以根据“sort”的值对要排序的列进行创意......使用它,它通常最终看起来像下面令人难以置信的混乱条款:

显然,这是一个非常精简的例子。真正的东西,因为我们通常有四到五列来支持排序,除此之外,每列可能还有第二列甚至第三列(例如日期降序,然后按名称升序排序),并且每列都支持双列定向排序,有效地使案例数量增加一倍。是的……它很快就长毛了。

这个想法是,人们可以“轻松”更改排序情况,以便在 storagedatetime 之前对车辆 ID 进行排序......但伪灵活性,至少在这个简单的例子中,真的到此为止。本质上,每个未通过测试的案例(因为我们的排序方法这次不适用于它)呈现一个 NULL 值。因此,您最终会得到一个功能如下的子句:

你明白了。它之所以有效,是因为 SQL Server 按子句的顺序有效地忽略了空值。这很难维护,任何对 SQL 有任何基本工作知识的人都可能看到。如果我失去了你们中的任何一个,请不要难过。我们花了很长时间才让它工作,但我们仍然对尝试编辑它或创建类似的新东西感到困惑。值得庆幸的是,它不需要经常更改,否则它很快就会变得“不值得麻烦”。

然而它确实奏效了。


我的问题是: 有没有更好的方法?

我对存储过程以外的解决方案没有意见,因为我意识到这可能不是要走的路。最好,我想知道是否有人可以在存储过程中做得更好,但如果没有,你们都如何处理让用户使用 ASP.NET 动态排序数据表(也可以双向)?

感谢您阅读(或至少略读)这么长的问题!

PS:很高兴我没有展示我的存储过程示例,该示例支持动态排序、列的动态过滤/文本搜索、通过 ROWNUMBER() OVER 进行分页,尝试...捕获错误时的事务回滚... “庞然大物”甚至还没有开始描述它们。


更新:

  • 我想避免动态 SQL。将字符串解析在一起并在其上运行 EXEC 会首先破坏存储过程的许多目的。有时我想知道这样做的缺点是否不值得,至少在这些特殊的动态排序情况下。尽管如此,每当我做这样的动态 SQL 字符串时,我总是觉得很脏——就像我仍然生活在经典的 ASP 世界中一样。
  • 我们首先需要存储过程的很多原因是为了安全。我不能就安全问题打电话,只建议解决方案。使用 SQL Server 2005,我们可以在架构级别对单个存储过程设置权限(如果需要,基于每个用户),然后直接拒绝对表的任何查询。批评这种方法的利弊也许是另一个问题,但这又不是我的决定。我只是主要的代码猴子。:)
0 投票
2 回答
2021 浏览

unicode - 可用于欺骗字符串排序器的 Unicode 字符?

由于 Unicode 缺少一系列零宽度排序字符,因此我需要确定等效字符,以便我可以在按字符值自动排序的列表上强制执行特定顺序。不幸的是,列表项不是按字母顺序排列的,也不可以在它们前面加上可见字符以确保排序结果与想要的结果相匹配。

哪些 Unicode 字符可以放在常规拉丁字母文本前面,并且不会出现,但仍然允许我以我需要的方式“尖峰”排序?

(顺便说一句,这是使用带有用户配置文件列表字段的 Drupal 5 完成的。不要费心建议将其更改为词汇/类别。)

0 投票
13 回答
317812 浏览

arrays - VBA数组排序功能?

我正在为 VBA 中的数组寻找一个不错的排序实现。首选快速排序。或者除了冒泡或合并之外的任何其他排序算法就足够了。

请注意,这适用于 MS Project 2003,因此应避免使用任何 Excel 本地函数和任何与 .net 相关的内容。