Tag: sorting

按多个属性对列表进行sorting?

我有一个列表清单: [[12, 'tall', 'blue', 1], [2, 'short', 'red', 9], [4, 'tall', 'blue', 13]] 如果我想sorting一个元素,说高/短元素,我可以通过s = sorted(s, key = itemgetter(1)) 。 如果我想按照高/短和颜色进行sorting,我可以做两次,每次做一次,但是有更快的方法吗?

按键sorting散列,在Ruby中返回散列

这是sorting哈希和返回哈希对象(而不是数组)的最佳方法: h = {"a"=>1, "c"=>3, "b"=>2, "d"=>4} # => {"a"=>1, "c"=>3, "b"=>2, "d"=>4} Hash[h.sort] # => {"a"=>1, "b"=>2, "c"=>3, "d"=>4}

如何在现代C ++中实现经典的sortingalgorithm?

来自C ++标准库的std::sortalgorithm(和它的cousins std::partial_sort和std::nth_element )在大多数实现中是一个更复杂和更混合的基本sortingalgorithm ,比如selectsorting,插入sorting,快速sorting,合并sorting或堆sorting。 这里和姊妹网站上有许多问题,例如https://codereview.stackexchange.com/与错误,复杂性和这些经典sortingalgorithm实现的其他方面有关。 大多数提供的实现包括原始循环,使用索引操作和具体types,并且通常在正确性和效率方面是非平凡的。 问题 :如何使用现代C ++实现上述经典sortingalgorithm? 没有原始循环 ,但将标准库的algorithm构build块与<algorithm> 迭代器接口和使用模板而不是索引操作和具体types C ++ 14风格 ,包括完整的标准库,以及句法噪声抑制器,例如auto ,模板别名,透明比较器和多态lambdaexpression式。 备注 : 有关sortingalgorithm实现的进一步参考,请参阅Wikipedia , Rosetta Code或http://www.sorting-algorithms.com/ 根据肖恩家长的惯例 (幻灯片39),一个原始循环比一个操作符的两个函数的组合更长。 所以f(g(x)); 或f(x); g(x); f(x); g(x); 或f(x) + g(x); 不是原始循环,也不是下面的selection_sort和insertion_sort循环。 我遵循Scott Meyers的术语来表示当前C ++ 1y已经作为C ++ 14,并且将C ++ 98和C ++ 03都表示为C ++ 98,所以不要为此而激怒我。 正如@Mehrdad的评论中所build议的那样,我在回答结尾提供了四个实例作为实例:C ++ 14,C ++ 11,C ++ 98和Boost和C ++ […]

编写一个程序,从10亿个数字中找出100个最大的数字

我最近参加了一个采访,在那里我被要求“写一个程序,从10亿个数字中找出100个最大的数字”。 我只能给出一个暴力解决scheme,它是在O(nlogn)时间复杂度sorting数组,并采取最后100个数字。 Arrays.sort(array); 面试官正在寻找一个更好的时间复杂性,我试了一些其他的解决scheme,但没有回答他。 有更好的时间复杂性解决scheme吗?

如何将“参数”对象转换为JavaScript中的数组?

在JavaScript中的arguments对象是一个奇怪的疣 – 它在大多数情况下就像一个数组,但它实际上不是一个数组对象。 由于它完全是其他的东西 ,它没有Array.prototype的有用函数,比如forEach , sort , filter和map 。 用一个简单的for循环来从一个参数对象构造一个新的数组是非常容易的。 例如,这个函数对它的参数进行sorting: function sortArgs() { var args = []; for (var i = 0; i < arguments.length; i++) args[i] = arguments[i]; return args.sort(); } 然而,这仅仅是为了访问非常有用的JavaScript数组函数而必须做的一件相当可怜的事情。 有使用标准库的内置方法吗?

在PHP中sorting对象

什么是在PHP中sorting对象的优雅方式? 我很想完成类似的事情。 $sortedObjectArary = sort($unsortedObjectArray, $Object->weight); 基本上指定我想要sorting的数组以及我要sorting的字段。 我研究了multidimensional arraysorting,可能有一些有用的东西,但我没有看到任何优雅或明显的东西。

如何通过版本string的formssorting的git标签forms为rc-XYZW?

当我input命令时: git tag -l 我得到这样的结果: rc-0.9.0.0 rc-0.9.0.1 rc-0.9.0.10 rc-0.9.0.11 rc-0.9.0.12 rc-0.9.0.2 rc-0.9.0.3 rc-0.9.0.4 rc-0.9.0.5 rc-0.9.0.6 rc-0.9.0.7 rc-0.9.0.8 rc-0.9.0.9 而不是我想要的: rc-0.9.0.0 rc-0.9.0.1 rc-0.9.0.2 rc-0.9.0.3 rc-0.9.0.4 rc-0.9.0.5 rc-0.9.0.6 rc-0.9.0.7 rc-0.9.0.8 rc-0.9.0.9 rc-0.9.0.10 rc-0.9.0.11 rc-0.9.0.12 如何sorting当前列表来获得这样的结果?

heapq与自定义比较谓词

我正在尝试使用自定义sorting谓词来构build堆。 由于进入它的值是“用户自定义”types,所以我不能修改它们的内置比较谓词。 有没有办法做到这样的事情: h = heapq.heapify([…], key=my_lt_pred) h = heapq.heappush(h, key=my_lt_pred) 或者甚至更好,我可以包装heapq函数在我自己的容器中,所以我不需要继续传递谓词。

并行sortingalgorithm

我正在寻找一个在C#中的并行(multithreading)sortingalgorithm的简单实现,它可以在List<T>或Arrays上运行,并可能使用并行扩展,但这部分并不是必须的。 编辑:弗兰克克鲁格提供了一个很好的答案,但是我希望将该示例转换为一个不使用LINQ。 另请注意, Parallel.Do()似乎已被Parallel.Invoke()取代。 谢谢。

MySQL:对GROUP_CONCAT值进行sorting

简而言之:有什么办法可以对GROUP_CONCAT语句中的值进行sorting? 查询: GROUP_CONCAT((SELECT GROUP_CONCAT(parent.name SEPARATOR " &raquo; ") 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 我得到这一行: 工艺品»细木工 行政»组织 我想要这样: 行政»组织 工艺品»细木工