Sorting 使用给定的排序函数对成对数组进行排序

Sorting 使用给定的排序函数对成对数组进行排序,sorting,Sorting,假设我有一个稳定的排序算法,可以对整数数组进行排序a。因此,sort(A)将以升序返回A的元素 我有一个整数对数组,我想在第二个元素上排序,在这里可以重复。如果第二个元素中存在重复项,数组将保留元素的顺序(它应该是稳定的) 因此,如果数组有条目: (1,2),(1,1),(0,2),(3,2),(4,1) 那么结果将是: (1,1),(4,1),(1,2),(0,2),(3,2) 这是可能的,只使用我提供的排序函数,还是我需要编写自己的排序函数?数组。排序(按:{$0.1

假设我有一个稳定的排序算法,可以对整数数组进行排序
a
。因此,
sort(A)
将以升序返回
A
的元素

我有一个整数对数组,我想在第二个元素上排序,在这里可以重复。如果第二个元素中存在重复项,数组将保留元素的顺序(它应该是稳定的)

因此,如果
数组
有条目:

(1,2),(1,1),(0,2),(3,2),(4,1)
那么结果将是:

(1,1),(4,1),(1,2),(0,2),(3,2)

这是可能的,只使用我提供的排序函数,还是我需要编写自己的排序函数?

数组。排序(按:{$0.1<$1.1})

在考虑了一段时间后,我认为这可能可行,但也许有人可以再次检查它是否有意义:

我想创建一个映射,如果(x,y)和(z,y)是数组中第二个分量为y的唯一对,那么映射(y)=[x,z]。换句话说,给定一个整数x,该映射查找所有整数y的集合,使得(y,x)是数组中的一对。我应该能够通过循环数组在线性时间(以成对数组的大小)构建此映射,然后在y上排序后,使用映射重建原始数组(再次以成对数组的大小在线性时间)

你写的东西对我来说没有多大意义。我给定的排序函数在哪里使用?我认为您需要重写排序函数,以便它可以比较第二项。如果我删除排序对的稳定性要求,该怎么办?但是排序函数以[Int]作为输入,而不是[(Int,Int)],因此我不确定如何将数组传递给函数。正确,因此,该算法的总运行时间是n*log(n)(这对我来说很好)。我想知道这是否可以在不重写sort函数的情况下实现(上面的操作似乎可以完成)。不过,它确实有需要大量(线性)额外内存的缺点。我认为最好的方法是
让数组=[(1,2),(1,1),(0,2),(3,2),(4,1)]。