Tag: sorting

Unixsorting的版本号

我有一个版本号列表,比如说他们在一个文件版本.txt中 1.2.100.4 1.2.3.4 10.1.2.3 9.1.2.3 我想对它们进行sorting,以便按版本sorting。 即: 1.2.3.4 1.2.100.4 9.1.2.3 10.1.2.3 我曾尝试使用“k”参数使用各种sorting命令,但不太了解它足以把它closures。 任何帮助,将不胜感激。

`std :: list <> :: sort()` – 为什么突然切换到自顶向下的策略?

我记得自从时代开始以来,实现std::list<>::sort()的最stream行的方法是以自底向上的方式实现的经典合并sortingalgorithm(另请参阅什么使得gcc std :: listsorting实现如此之快? )。 我记得有人把这个策略恰当地称为“洋葱链”的方法。 至less在GCC的C ++标准库实现中就是这样的(例如,请参阅这里 )。 而这正是MSVC版本标准库中老版本Dimkumware的STL以及MSVC所有版本VS2013的所有版本。 然而,随VS2015提供的标准库突然不再遵循这种分类策略。 VS2015附带的库使用相当简单的recursion实现自顶向下合并sorting。 这让我觉得很奇怪,因为自上而下的方法需要访问列表的中点,以便将其分成两半。 由于std::list<>不支持随机访问,所以find中点的唯一方法是从字面上遍历列表的一半。 另外,最初需要知道列表中元素的总数(在C ++ 11之前不一定是O(1)操作)。 不过,VS2015中的std::list<>::sort()正是这样做的。 下面是该实现的摘录,它定位中点并执行recursion调用 … iterator _Mid = _STD next(_First, _Size / 2); _First = _Sort(_First, _Mid, _Pred, _Size / 2); _Mid = _Sort(_Mid, _Last, _Pred, _Size – _Size / 2); … 正如你所看到的,他们只是无情地使用std::next来遍历列表的前半部分,并到达_Mid迭代器。 我想知道这个开关背后的原因是什么? 我所看到的是在recursion的每个级别重复调用std::next看似明显的低效率。 天真的逻辑说,这是慢的 。 如果他们愿意支付这种价格,他们可能期望得到回报。 他们到底是什么? 我不会立即看到这种algorithm具有更好的caching行为(与原始的自底向上方法相比)。 […]

基数sorting与计数sorting与桶sorting。 有什么不同?

我正在阅读基数,计数和桶sorting的定义,似乎所有这些都只是下面的代码: public static void sort(int[] a, int maxVal){ int [] bucket=new int[maxVal+1]; for (int i=0; i<bucket.length; i++){ bucket[i]=0; } for (int i=0; i<a.length; i++){ bucket[a[i]]++; } int outPos=0; for (int i=0; i<bucket.length; i++){ for (int j=0; j<bucket[i]; j++){ a[outPos++]=i; } } } 我知道我不能对,所以我错过了什么? 如果您认为可以帮助解释Java或C语言,请显示代码

大pandas按组合和列进行sorting

给定以下dataframe In [31]: rand = np.random.RandomState(1) df = pd.DataFrame({'A': ['foo', 'bar', 'baz'] * 2, 'B': rand.randn(6), 'C': rand.rand(6) > .5}) In [32]: df Out[32]: ABC 0 foo 1.624345 False 1 bar -0.611756 True 2 baz -0.528172 False 3 foo -1.072969 True 4 bar 0.865408 False 5 baz -2.301539 True 我想按组合( A )按B总和,然后按C (不汇总)的值sorting。 所以基本上得到了A组的顺序 In […]

在OrderBy中使用LINQ自定义sorting逻辑

什么是正确的方式来sortingstring的列表,我希望项目以下划线'_'开头,在列表的底部,否则一切都按字母顺序排列。 现在我正在做这样的事情, autoList.OrderBy(a => a.StartsWith("_") ? "ZZZZZZ"+a : a )

pandas中的多指标分类

我有一个pandasdf中的多索引列的数据集,我想按特定列中的值进行sorting。 我曾尝试使用sortindex和sortlevel,但一直没有能够得到我期待的结果。 我的数据集如下所示: Group1 Group2 ABCABC 1 1 0 3 2 5 7 2 5 6 9 1 0 0 3 7 0 2 0 3 5 我想sorting所有的数据和索引在第1组中列C按降序排列,所以我的结果如下所示: Group1 Group2 ABCABC 2 5 6 9 1 0 0 1 1 0 3 2 5 7 3 7 0 2 0 3 5 是否有可能做到这一点与我的数据所在的结构,或者我应该交换Group1的索引?

双枢轴快速sorting和快速sorting有什么区别?

我从来没有见过双枢轴快速sorting之前。 如果是快速sorting的升级版本? 双枢轴快速sorting和快速sorting有什么区别?

字母“y”在按字母顺序排列时出现在“i”之后

当使用函数sort(x) ,其中x是一个字符,字母“y”跳转到中间,在字母“i”之后: > letters [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" [21] "u" "v" "w" "x" "y" "z" > sort(letters) [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "y" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" […]

如何对Collection <T>进行sorting?

我有一个通用的Collection并试图找出如何对其中包含的项目进行sorting。 我已经尝试了一些东西,但我不能让他们中的任何一个工作。

自定义Python列表sorting

我正在重构我的一些旧的代码,碰到这个: alist.sort(cmp_items) def cmp_items(a, b): if a.foo > b.foo: return 1 elif a.foo == b.foo: return 0 else: return -1 代码的作品(我写了3年前),但我无法find这个东西logging在Python文档中的任何地方,每个人都使用sorted()来实现自定义sorting。 有人可以解释为什么这个工程?