sorting相关内容

如何使用归并排序算法就地排序?

我知道这个问题不太具体. 我只想有人告诉我如何将普通合并排序转换为就地合并排序(或具有恒定额外空间开销的合并排序). 我只能找到(在网上)说“它太复杂"或“超出本文范围"的页面. 唯一已知的就地合并方法(没有任何额外空间)过于复杂,无法简化为实用程序.(取自从这里) 即使太复杂了,如何就地进行归并排序的基本概念是什么? 解决方案 Knuth 将此作为练习(第 3 卷 ..
发布时间:2022-01-31 08:28:24 其他开发

如何在现代 C++ 中实现经典排序算法?

C++ 标准库中的 std::sort 算法(及其表亲 std::partial_sort 和 std::nth_element)是在大多数实现中更基本的排序算法的复杂和混合合并,例如选择排序、插入排序、快速排序、合并排序或堆排序. 这里和姐妹网站上有很多问题,例如 https://codereview.stackexchange.com/ 与错误、复杂性有关以及这些经典排序算法实现的其他方 ..
发布时间:2022-01-30 16:15:12 C/C++开发

如何对列表进行排序<T>通过对象中的属性

我有一个名为 Order 的类,它具有 OrderId、OrderDate、Quantity 和 总计.我有这个 Order 类的列表: ListobjListOrder = 新列表();GetOrderList(objListOrder);//填写订单列表 现在我想根据 Order 对象的一个​​属性对列表进行排序,例如我需要按订单日期或订单 ID 对其进行排序. 如何在 C# 中做到 ..
发布时间:2022-01-30 09:57:43 C#/.NET

JavaScript 中的排序:对于比较函数来说,返回布尔值不应该足够吗?

我总是像这样成功地对我的数组进行排序(当我不想要标准的字典顺序时): var arr = […]//一些数字左右arr.sort(函数(a,b){返回一个>乙;}); 现在,有人告诉我这是错误的,我需要 return a-b 代替.这是真的吗?如果是,为什么?我已经测试了我的比较功能,它有效!另外,为什么我的解决方案如此普遍如果它是错误的? 解决方案 TL;DR 我总是像这样成功 ..
发布时间:2022-01-29 22:48:42 前端开发

使用 1 MB RAM 对 100 万个 8 位十进制数字进行排序

我有一台具有 1 MB RAM 且没有其他本地存储的计算机.我必须使用它通过 TCP 连接接受 100 万个 8 位十进制数字,对它们进行排序,然后通过另一个 TCP 连接将排序后的列表发送出去. 数字列表可能包含重复项,我不能丢弃.代码将放在 ROM 中,所以我不需要从 1MB 中减去我的代码大小.我已经有了驱动以太网端口和处理 TCP/IP 连接的代码,它的状态数据需要 2 KB,包括一 ..
发布时间:2022-01-25 12:21:46 其他开发

无法复制:“比较方法违反了它的一般约定!"

我收到以下错误:“比较方法违反了它的一般合同!"使用以下比较器时,但是我无法使用 jUnit 复制异常.我想知道是什么导致了这个问题以及如何复制它.有其他人有同样问题但不知道如何复制它的例子. 公共类 DtoComparator 实现 Comparator;{@覆盖公共 int 比较(Dto r1,Dto r2){整数值 = 0;值 = r1.getOrder() - r2.getOrder() ..
发布时间:2022-01-25 09:42:44 Java开发

`predsort/3` 的可能行为

这是 回答关于对术语的特定参数进行排序的问题,而不为 keysort 创建新列表(如果我正确理解了原始问题). 假设我们希望 predsort/3 的行为与 sort/2 完全相同:如果我理解正确,这意味着将其称为: ?- predsort(比较,列表,排序). 现在说我们想使用 predsort/3 来按照 msort/2 的实现进行排序(另请参阅此 问题).一种方法是定义一个比较谓词 ..
发布时间:2022-01-25 09:36:01 其他开发

C# - IComparer - 如果日期时间为空,则应排序到底部而不是顶部

我有一个要按升序排序的日期列表.但是,默认比较器意味着我有: 空空值18/01/201123/01/2011 有人可以帮助使用 IComparer,这意味着按升序排序的日期如下所示: 18/01/201123/01/2011空值空值 解决方案 这是一个适用于几乎任何类型的通用比较器: var yourList = new List();yourList.Sort(比较器);//现在包含 ..
发布时间:2022-01-25 09:32:24 C#/.NET

排序谓词的链接(例如,对于 std::sort)

您可以将函数指针、函数对象(或 boost lambda)传递给 std::sort 以定义要排序的容器元素的严格弱排序. 但是,有时(我已经多次提到这一点),您希望能够链接“原始"比较. 一个简单的例子是,如果您对代表联系人数据的对象集合进行排序.有时您会希望按 姓、名、区号 进行排序.其他时候 名字、姓氏 - 还有其他时候 年龄、名字、区号 ...等 现在,您当然 ..
发布时间:2022-01-25 09:31:26 C/C++开发

在两个排序列表中查找匹配项比使用 for 循环更好的方法?

我有两个排序列表,都是非递减顺序.例如,我有一个带有元素 [2,3,4,5,6,7...] 的排序链表,另一个带有元素 [5,6,7,8,9...]. 我需要在两个列表中找到所有共同的元素.我知道我可以使用 for 循环和嵌套循环来迭代所有匹配项以找到相同的两个元素.但是,是否有另一种运行时间小于 O(n^2) 的方法? 解决方案 你可以在 O(n) 时间内完成.伪代码: a = ..
发布时间:2022-01-25 09:07:05 Java开发

字节数组的Java比较器(字典)

我有一个带有 byte[] 键的哈希图.我想通过 TreeMap 对其进行排序. 实现字典顺序比较器最有效的方法是什么? 解决方案 使用Guava,可以使用任一个: UnsignedBytes.lexicographicalComparator() SignedBytes.lexicographicalComparator() UnsignedBytes 比较器似乎具有 ..
发布时间:2022-01-25 09:03:33 Java开发

.NET 中有排序的集合类型吗?

我正在寻找一个能够将所有物品保持井井有条的容器.我查看了 SortedList,但这需要一个单独的键,并且不允许重复键.我也可以只使用一个未排序的容器,并在每次插入后对其进行显式排序. 用法: 偶尔插入 按顺序频繁遍历 最好不要使用与实际对象分开的键,使用比较函数进行排序. 需要对等价对象进行稳定排序,但这不是必需的. 不需要随机访问. 我意识到我可以自己构建一个平衡的树 ..
发布时间:2022-01-24 20:23:27 C#/.NET