Arrays 对向量数组排序的更有效方法2(“y”递减)?

Arrays 对向量数组排序的更有效方法2(“y”递减)?,arrays,vector,Arrays,Vector,以递减方式基于y对Vector2数组排序的最有效方法是什么? 例如: 给定以下向量数组: Vector2(1, 4) Vector2(5, 9) Vector2(0, 3) Vector2(0, 6) Vector2(1, -2) 按y顺序排列的数组: Vector2(5, 9) Vector2(0, 6) Vector2(1, 4) Vector2(0, 3) Vector2(1, -2) 上升1: 我使用的语言给了我这样的信息: 无效排序\自定义对象对象,字符串函数 使用自定义方法对数组

以递减方式基于y对Vector2数组排序的最有效方法是什么? 例如:

给定以下向量数组:

Vector2(1, 4)
Vector2(5, 9)
Vector2(0, 3)
Vector2(0, 6)
Vector2(1, -2)
按y顺序排列的数组:

Vector2(5, 9)
Vector2(0, 6)
Vector2(1, 4)
Vector2(0, 3)
Vector2(1, -2)
上升1:

我使用的语言给了我这样的信息:

无效排序\自定义对象对象,字符串函数

使用自定义方法对数组进行排序。参数是一个对象,它包含方法和该方法的名称。自定义方法从数组中的一对元素接收两个参数,如果第一个参数小于第二个参数,则必须返回true,否则返回false

我是这样得到的,带着驯鹿的回答:

func ord(var a1, var a2):
    if a1.y > a2.y:
        return true
    else: 
        return false

my_array.sort_custom(self, "ord")

这取决于输入集,如果没有适当的bechmarking,您无法决定一个具有相同时间复杂度的算法是否优于另一个算法

我将使用std::sort和自定义函数

std::sort(std::begin(arr), std::end(arr), [](auto a1, auto a2) {
    return a1.y < a2.y; 
});
比较函数可能是内联的,因此在使用结构时不会有任何显著的开销,时间效率在logn上

//编辑
对不起,我假设你使用C++,但是看起来更一般的问题。因此后者适用,但不使用std::sort,只需使用其中一种快速算法,并使用其他选项对其进行基准测试。应该不会有太多开销。

我不使用c++,但我使用的语言给了我这样的信息:`void sort_custom Object obj,String func使用自定义方法对数组进行排序。参数是一个对象,它包含方法和该方法的名称。自定义方法从数组中的一对元素接收两个参数,如果第一个参数小于第二个参数,则必须返回true,否则返回false`我是这样理解的:`func ord var a1,var a2:if a1.y>a2.y:return true else:return false my_array.sort_custom self,ord`