Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 按键和值对字典数组进行排序_Algorithm_Sorting - Fatal编程技术网

Algorithm 按键和值对字典数组进行排序

Algorithm 按键和值对字典数组进行排序,algorithm,sorting,Algorithm,Sorting,在我的例子中,值具有优先级,因此我需要先按值对数组排序,然后按键按字母顺序排序。使用哪种算法/技术 以下是一个例子: [ [ d: 1, r: 0, z: 0, z: 0, r: 0, => a: 1, a: 1, d: 1, e:

在我的例子中,值具有优先级,因此我需要先按值对数组排序,然后按键按字母顺序排序。使用哪种算法/技术

以下是一个例子:

[                           [
    d: 1,                       r: 0,
    z: 0,                       z: 0,
    r: 0,       =>              a: 1,
    a: 1,                       d: 1,
    e: 1                        e: 1
]                           ]

我正在考虑将数组分成两组(第一组由值为0的元素组成;第二组由值为1的元素组成),对每个元素进行排序,然后再次合并它们。但我正在寻找更好的解决方案

您使用的是什么语言?请同时提供您当前的代码。然后我们可以查看它并找出错误所在。排序函数通常将比较函数作为参数。所以你所需要做的就是实现字典之间的比较。我不确定“手工”到底是什么意思。无论哪种方法,算法都是相同的:将散列转换为键值对数组,然后使用比较器调用内置排序例程。如果您不想使用内置的排序例程,那么问题听起来像是“如何手动编写quick/tim/merge排序”,这将是您需要完成的99%的工作(编写比较器也是一样的,而且都很琐碎)。如果出于某种原因您不使用比较器,那么该算法是可行的“对值进行排序,然后识别并迭代每组等效值,并对该子数组执行排序”。长话短说……
h.sort\u by(&:reverse)
。。。。