Questions tagged «sorting»

排序是将一些订单应用于项目集合的过程。




15
C ++排序和跟踪索引
我希望使用C ++和希望的标准库,以升序对样本序列进行排序,但是我也想记住新样本的原始索引。 例如,我有一个样本集,向量或矩阵A : [5, 2, 1, 4, 3]。我想将它们排序为 B : [1,2,3,4,5],但我也想记住这些值的原始索引,因此我可以得到另一个集合,该集合将是: C : [2, 1, 4, 3, 0 ]-对应于原始元素“ B”中每个元素的索引。一个'。 例如,在Matlab中,您可以执行以下操作: [a,b]=sort([5, 8, 7]) a = 5 7 8 b = 1 3 2 谁能看到一个很好的方法来做到这一点?
216 c++  sorting  stl  indexing 

10
排序10个数字的最快方法?(数字为32位)
我正在解决一个问题,它涉及非常快速地排序10个数字(int32)。我的应用程序需要尽可能快地对10个数字进行数百万次排序。我正在采样数十亿个元素的数据集,每次需要从中选择10个数字(简化)并对它们进行排序(并从排序的10个元素列表中得出结论)。 目前,我正在使用插入排序,但我想我可以针对10个数字的特定问题实现一个非常快速的自定义排序算法,该算法将胜过插入排序。 有谁知道如何解决这个问题?


12
将最胖的人从超载的飞机上摔下来。
假设您有一架飞机,而且燃油低。除非飞机掉落3000磅的乘客重量,否则它将无法到达下一个机场。为了最大程度地挽救生命,我们希望首先将最重的人员从飞机上赶下。 哦,是的,飞机上有数百万人,我们希望找到一种最佳算法来查找最重的乘客,而不必对整个列表进行排序。 这是我尝试用C ++编写代码的代理问题。我想按重量对旅客舱单进行“ partial_sort”,但我不知道我需要多少元素。我可以实现自己的“ partial_sort”算法(“ partial_sort_accumulate_until”),但是我想知道是否有使用标准STL进行此操作的简便方法。
200 c++  algorithm  sorting  stl 

14
就地基数排序
这是一个很长的文字。请多多包涵。归根结底,问题是:是否存在可行的就地基数排序算法? 初步 我有很多小的固定长度字符串,它们只使用我要排序的字母“ A”,“ C”,“ G”和“ T”(是的,您猜对了:DNA)。 目前,我在STL的所有常见实现中都std::sort使用了introsort。这很好。但是,我相信,基数排序适合我的问题集完美,应该工作多在实践中更好。 细节 我已经用一个非常幼稚的实现测试了这个假设,对于相对较小的输入(大约10,000个),这是正确的(至少要快两倍以上)。但是,当问题规模变大(N > 5,000,000)时,运行时间将大大降低。 原因很明显:基数排序需要复制整个数据(实际上,在我的幼稚实现中不止一次)。这意味着我已经在主内存中放入了大约4 GiB,这显然会降低性能。即使没有,我也负担不起这么大的内存,因为问题的大小实际上变得更大了。 用例 理想情况下,该算法应适用于2到100之间的任何字符串长度,适用于DNA以及DNA5(允许附加通配符“ N”),甚至适用于带有IUPAC 模糊代码的 DNA (导致16个不同的值)。但是,我意识到所有这些情况都无法解决,因此我对速度的提高感到满意。该代码可以动态决定要调度到哪个算法。 研究 不幸的是,维基百科上关于基数排序的文章是没有用的。关于就地变体的部分是完整的垃圾。在上基数NIST-DADS部分排序旁边不存在的。有一篇听起来很有希望的论文,叫做“ 高效自适应就地基数排序”,它描述了算法“ MSL”。不幸的是,这篇论文也令人失望。 特别是,有以下几点。 首先,该算法包含一些错误,并且有很多无法解释的地方。特别是,它没有详细介绍递归调用(我只是假设它增加或减少了一些指针来计算当前的shift和mask值)。同样,它使用这些函数dest_group并且dest_address没有给出定义。我看不到如何有效地实现这些功能(也就是说,在O(1)中;至少dest_address是不平凡的)。 最后但并非最不重要的一点是,该算法通过将数组索引与输入数组内的元素交换来实现就位。显然,这仅适用于数值数组。我需要在字符串上使用它。当然,我可以拧紧强类型,并假设内存可以容忍我存储不属于它的索引。但这仅在我可以将字符串压缩到32位内存(假设32位整数)的情况下有效。那只是16个字符(在16> log(5,000,000)的那一刻,让我们忽略它)。 一位作者的另一篇论文没有给出任何准确的描述,但它给出了MSL的运行时间为亚线性的情况,这是完全错误的。 回顾一下:是否有希望找到一个可行的参考实现,或者至少一个对DNA字符串起作用的就地基数排序的良好伪代码/描述?

8
有没有一种方法可以按列进行“ uniq”?
我有一个.csv文件,如下所示: stack2@example.com,2009-11-27 01:05:47.893000000,example.net,127.0.0.1 overflow@example.com,2009-11-27 00:58:29.793000000,example.net,255.255.255.0 overflow@example.com,2009-11-27 00:58:29.646465785,example.net,256.255.255.0 ... 我必须从文件中删除重复的电子邮件(整行)(即overflow@example.com,上面示例中包含的行之一)。如何uniq仅在字段1(用逗号分隔)上使用?根据man,uniq没有列选项。 我尝试了一些东西,sort | uniq但是没有用。
195 linux  shell  sorting  uniq 



2
MySQL:对GROUP_CONCAT值进行排序
简而言之:有什么方法可以对GROUP_CONCAT语句中的值进行排序吗? 查询: GROUP_CONCAT((SELECT GROUP_CONCAT(parent.name SEPARATOR " » ") FROM test_competence AS node, test_competence AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt AND node.id = l.competence AND parent.id != 1 ORDER BY parent.lft) SEPARATOR "<br />\n") AS competences 我得到这一行: 工艺品»细木工 行政管理»组织 我想要这样: 行政管理»组织 工艺品»细木工

23
在Python中查找列表的中位数
您如何在Python中找到列表的中位数?该列表可以是任何大小,并且不能保证数字以任何特定顺序排列。 如果列表包含偶数个元素,则该函数应返回中间两个元素的平均值。 以下是一些示例(排序用于显示目的): median([1]) == 1 median([1, 1]) == 1 median([1, 1, 2, 4]) == 1.5 median([0, 2, 5, 6, 8, 9, 9]) == 6 median([0, 0, 0, 0, 4, 4, 6, 8]) == 2
181 python  list  sorting  median 

10
排序制表符分隔的文件
我有以下格式的数据: foo<tab>1.00<space>1.33<space>2.00<tab>3 现在,我尝试根据最后一个字段对文件进行递减排序。我尝试了以下命令,但是没有按照我们的预期排序。 $ sort -k3nr file.txt # apparently this sort by space as delimiter $ sort -t"\t" -k3nr file.txt sort: multi-character tab `\\t' $ sort -t "`/bin/echo '\t'`" -k3,3nr file.txt sort: multi-character tab `\\t' 什么是正确的方法? 这是示例数据。

26
有没有比Bogosort(aka Monkey Sort)更糟糕的排序算法?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 改善这个问题 我的同事带我回到了大学时代,今天早上讨论了排序算法。我们回想起了我们最喜欢的StupidSort,例如其中之一,我们确定我们看到了一种排序算法,该算法是O(n!)。那使我开始寻找可以找到的“最差”的排序算法。 我们假设,一个完全随机排序将是非常糟糕的(即随机化的元素- ?是为了不随机化再次),我环顾四周,发现了它显然称BOGO排序,或猴排序,或者有时只是随机排序。 Monkey Sort似乎具有的最差情况性能O(∞),的最佳情况性能O(n)和平均性能O(n·n!)。 目前平均可接受的排序性能最差的排序算法是什么(并且蜂声比差O(n·n!))?
178 algorithm  sorting  big-o 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.