0

我有两列数据。例如,

[78, c]

[28, 一个]

[34,克]

我想看看是否有任何内置函数可以对数字进行排序并告诉我订单信息。例如,(从小到大)该函数将返回 [2, 3, 1] 因为第 2 行具有最小的第 1 列元素。

4

1 回答 1

1

你的数据结构是什么?

如果您使用 C++/CLI,那么您可以使用整个 .NET 框架。

也就是说,我不相信有任何内置的东西会告诉你顺序。我相信一切都会真正做到这一点。

如果您真的需要订单,而不是排序列表,我相信这会做到。这会创建新的对象来记住它们的原始列表位置,对它们进行排序,然后读回原始索引是什么。

// I'm assuming you have a class similar to this already.
ref class MyData
{
public:
    int number;
    String^ letter;
};

ref class SortHelper : IComparable<SortHelper^>
{
public:
    MyData^ data;
    int originalIndex;

    SortHelper(MyData^ data, int index)
    {
        this->data = data;
        this->originalIndex = index;
    }

    virtual CompareTo(SortHelper^ other)
    {
        return this->data->number.CompareTo(other->data->number);
    }
};

void List<int> GetSortedIndexes(List<MyData>^ input)
{
    List<SortHelper>^ working = gcnew List<SortHelper>();
    for(int i = 0; i < input->Count; i++)
    {
        working->Add(gcnew SortHelper(input[i], i));
    }

    working->Sort();

    List<int>^ result = gcnew List<int>();        
    for each(SortHelper^ helper in working)
    {
        result->Add(helper->originalIndex);
    }

    return result;
}
于 2012-04-27T18:54:41.873 回答