Tag: sorting

C ++sorting和跟踪索引

使用C ++,希望是标准库,我想按升序对样本序列进行sorting,但我也想记住新样本的原始索引。 例如,我有一个集合,或向量,或样本matrixA : [5, 2, 1, 4, 3] 。 我想把它们sorting为B : [1,2,3,4,5] ,但是我也想记住值的原始索引,所以我可以得到另一个集合: C : [2, 1, 4, 3, 0 ] – 这对应于原来的'A'中的'B'中的每个元素的索引。 例如,在Matlab中,你可以这样做: [a,b]=sort([5, 8, 7]) a = 5 7 8 b = 1 3 2 任何人都可以看到一个很好的办法做到这一点

按列sortingNumPy中的数组

我怎样才能sorting在NumPy第n列数组? 例如, a = array([[1, 2, 3], [4, 5, 6], [0, 0, 1]]) 我想在第二列中sorting行,这样我就回来了: array([[0, 0, 1], [1, 2, 3], [4, 5, 6]])

有没有一种方法来衡量一个列表如何sorting?

有没有办法测量一个列表的sorting方式? 我的意思是,这不是要知道一个列表是否被sorting(布尔),而是像“sorting”的比率,就像统计中的相关系数一样。 例如, 如果列表中的项目按升序排列,那么它的比率就是1.0 如果列表按降序排列,则其速率将为-1.0 如果列表几乎按升序sorting,则其比率将为0.9或接近1的某个值。 如果列表根本没有sorting(随机),它的速率将接近于0 我正在斯卡拉的一个小型图书馆练习。 我认为sorting率是有用的,但我没有find任何关于这样的信息。 也许我不了解这个概念的充分条件。

就地基数sorting

这是一个长文本。 请多多包涵。 下来,问题是: 是否有一个可行的就地基数sortingalgorithm ? 初步 我有很多小的固定长度的string,只使用我想分类的字母“A”,“C”,“G”和“T”(是的,你猜对了)。 目前,我使用std::sort ,它在STL的所有常见实现中使用introsort 。 这工作得很好。 不过,我确信基数sorting完全适合我的问题,在实践中应该更好。 细节 我已经用非常幼稚的实现来testing这个假设,对于相对较小的input(大约为10,000),这是真实的(至less是两倍以上)。 但是,当问题规模变大( N > 5,000,000)时,运行时间会严重恶化。 原因很明显:基数sorting需要复制整个数据(实际上我的幼稚实现不止一次)。 这意味着我已经将〜4 GiB放入了我的主内存,这显然会导致性能下降。 即使没有,我也不能使用这么多的记忆,因为问题的规模实际上变得更大了。 用例 理想的情况下,这个algorithm应该适用于DNA和DNA5(它允许一个额外的通配符“N”),甚至是带有IUPAC 模糊代码的 DNA(导致16个不同的值)。 但是,我意识到所有这些情况都不能被覆盖,所以我对任何速度的改善感到满意。 代码可以dynamic地决定分派给哪个algorithm。 研究 不幸的是, 关于基数sorting的维基百科文章是无用的。 关于就地变体的部分是完整的垃圾。 基数sorting的NIST-DADS部分几乎不存在。 有一种看起来很有前途的论文,称为高效自适应就地基sorting ,它描述了“MSL”algorithm。 不幸的是,这篇论文也令人失望。 具体来说,有以下几点。 首先,该algorithm包含几个错误,并留下很多原因。 特别是,它没有详细说明recursion调用(我简单地假设它递增或减less一些指针来计算当前的移位和掩码值)。 而且,它使用函数dest_group和dest_address而不给定义。 我没有看到如何有效地实现这些(即在O(1);至lessdest_address是不平凡的)。 最后但并非最不重要的是,该algorithm通过将数组索引与input数组内的元素交换来实现就地性。 这显然只适用于数值数组。 我需要在string上使用它。 当然,我可以拧紧打字,然后继续前进,假设内存将容忍我存储一个不属于它的索引。 但是,只要我能把我的string压缩到32位内存(假设是32位整数),这个工作就行得通。 那只有16个字符(让我们暂且忽略16> log(5,000,000))。 其中一位作者的另一篇论文根本没有给出准确的描述,但是它使得MSL的运行时呈现出平坦的错误。 回顾一下 :有没有希望find一个工作的参考实现,或至less有一个良好的伪代码/描述工作在地方基数sorting的DNAstring?

有一个倒挂的字符?

我必须维护大量的经典ASP页面,其中许多页面都有表格数据,根本没有sortingfunction。 数据库查询中使用的原始开发人员无论顺序如何,都是您所坚持的。 我想要对一些这些页面进行一些基本的sorting,而我正在用JavaScript来做所有的客户端。 我已经有了一个基本的脚本来按给定的方向对给定的列上的给定的表进行sorting,只要表受到我们在这里遵循的某些约定的限制,它就行得通。 我想要为用户界面做的事情只是表示与脱字符(^)的sorting方向和…什么? 有没有一个特殊的字符,直接对面的插入符号? 字母v不会完全切断它。 另外,还有其他的angular色配对可以使用吗?

Python列表按降序排列

我怎样才能以降序排列这个列表? timestamp = [ "2010-04-20 10:07:30", "2010-04-20 10:07:38", "2010-04-20 10:07:52", "2010-04-20 10:08:22", "2010-04-20 10:08:22", "2010-04-20 10:09:46", "2010-04-20 10:10:37", "2010-04-20 10:10:58", "2010-04-20 10:11:50", "2010-04-20 10:12:13", "2010-04-20 10:12:13", "2010-04-20 10:25:38" ]

把最胖的人从一架超载的飞机上抛下。

假设你有一架飞机,而且燃油很低。 除非飞机降低了3000磅的乘客重量,否则将无法到达下一个机场。 为了节省最多的生命,我们首先要把最重的人从飞机上抛下。 噢,飞机上有数百万人,我们希望有一个最佳的algorithm来find最重的乘客,而不必对整个列表进行sorting。 这是我试图用C ++编码的代理问题。 我想按重量对乘客舱单做一个“partial_sort”,但是我不知道我需要多less元素。 我可以实现我自己的“partial_sort”algorithm(“partial_sort_accumulate_until”),但我想知道是否有更简单的方法来使用标准的STL来做到这一点。

如何将集合转换为列表?

我正在使用Apache Collections库中的TreeBidiMap 。 我想对这个doubles的价值进行分类。 我的方法是检索一个值的Collection使用: Collection coll = themap.values(); 这自然工作正常。 主要问题:我现在想知道如何将转换/转换(不知道哪个是正确的) coll到一个List以便它可以被sorting? 然后我打算遍历sortingTreeBidiMap List对象,它应该是按顺序的,并使用themap.getKey(iterator.next())从TreeBidiMap ( themap )中获取适当的键,其中迭代器将位于doubles列表之上。

最快的方法来sorting10个数字? (数字是32位)

我正在解决一个问题,它涉及很快sorting10个数字(int32)。 我的应用程序需要尽可能快地sorting10百万次。 我正在抽样数十亿个元素的数据集,每次我需要从中select10个数字(简化)并对它们进行sorting(并从sorting后的10个元素列表中作出结论)。 目前我正在使用插入sorting,但我想我可以实现一个非常快速的自定义sortingalgorithm为我的具体问题的10个数字将击败插入sorting。 有没有人有任何想法如何解决这个问题?

SQL如何使sorting升序时为空值最后

我有一个date时间字段的SQL表。 有问题的字段可以为空。 我有一个查询,我希望按date时间字段递增sorting的结果,但是我想要的行的date时间字段在列表的末尾,而不是在开始。 有没有一个简单的方法来完成呢?