如何对4个1D阵列进行排序?

时间:2009-08-13 02:00:11

标签: arrays sorting autoit

我有四个数组:

Data Example:= (Array 1 | Array 2 | Array 3 | Array 4)

R.E.M.|In Time: The Best Of R.E.M. 1988-2003|album:6G5BGhEiLvck3kvKpSYw2y|Rock
Nick Drake|Family Tree|album:2euLAROPTmXDIDuU3qVMkf|Folk
Sonic Youth|Dirty|album:0QPkL6ap8riBoQ5xN8YDR3|Noise Rock

我想对其中一个数组过滤的所有数组进行排序,例如数组1: Artist

我正在使用AutoIt编程,但答案可能是VBA / VBS / ASP,Java或C#。

2 个答案:

答案 0 :(得分:1)

解决问题的面向对象方法是定义一个Album类型,其中包含与相册有关的所有4条信息,并且只有一个数组而不是4个数组。

然后,您可以根据需要定义相册的比较。这是C#中的一个例子(在Java中非常相似):

class Program {
    static void Main(string[] args) {
        Album[] albums = { new Album {  artist = "potatotes", 
                                        family = "soup", 
                                        title = "a", 
                                        year=1546 },
                           new Album {  artist = "etc",
                                        family="blabla",
                                        title="blablabla",
                                        year = 1999 }
                         };
        Array.Sort(albums);
    }
}

class Album : IComparable<Album> {

    public int CompareTo(Album y) {
        return family.CompareTo(y.family);
    }


    public string title { get; set; }
    public string artist { get; set; }
    public int year { get; set; }
    public string family { get; set; }
}

在这里,我们已经根据Album的家族实现了IComparable接口。一般的想法是将所有相关信息分组到一个类中,然后您可以根据其中一个字段定义该类对象的比较。

正如有些人可能指出的那样,有更灵活的方法可以在C#中实现这一点,但我希望尽可能简化和语言无关。

只要语言支持用户定义的结构,这应该可以复制,但我甚至不确定AutoIT是否支持。在这种情况下,您必须保留4个阵列,并实现自定义排序功能,对其中一个阵列进行排序,并同时在所有其他3个阵列上复制其交换操作。虽然这还有很多工作要做。

答案 1 :(得分:0)

  

我想对所有数组进行排序......

  1. Combine 1D arrays into a single 2D array
  2. 使用_ArraySort()对结果数组进行排序。
  3. 可选transpose array