2009-08-13 6 views
0

私は4つの配列の関連データを含むすべてを持って、How To ... 4×1Dアレイをソートする?

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などの配列の1つによってフィルタリングされます。 私はAutoItの問題をプログラミングしていますが、答えはVBA/VBS/ASP、Java、C#である可能性があります。

私の頭が痛くなります。

= |問題を解決する)arkSprout =

答えて

1

オブジェクト指向の方法は、アルバムに関連する情報のすべての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; } 
} 

、私たちはアルバムの家族の面でIComparableインターフェイスを実装しています。一般的な考え方は、すべての関連情報をクラスにグループ化し、そのクラスのオブジェクトの比較をそのフィールドの1つの観点から定義することができます。

一部が指摘するかもしれませんが、そこにC#でこれを達成するために、より柔軟な方法がありますが、私は可能な限りシンプルで、言語に依存しない、これを維持したいです。

これは、言語は、ユーザー定義の構造体をサポートしている限り複製することが可能なはずであるが、私はAutoItのはそれをサポートしているにもわかりません。その場合、4つの配列を保持し、配列の1つをソートし、3つすべての配列に対してスワップ操作を同時に複製するカスタムソート機能を実装する必要があります。それはもっとはるかに仕事です。

+0

+ 1.ButのAutoItに「向いオブジェクト」のようなものはありません。 –

+0

AutoItでコレクションが可能ですが、あまり柔軟ではありません:= [コード] $ col = ObjCreate( "Scripting.Dictionary") $ col.Item( "Artist")= "ソニックユース" [コード] しかし、コレクションソートの実装方法はわかりませんが、4つの配列を単一のn * 4D配列に変更する方が簡単なルートかもしれません。 ハムムーム... = |)arkSprout = – DarkSprout

+0

私は4Dアレイが1つではないと思います。言語がカスタム構造を適切にサポートしていない場合は、4つの配列を使用してください。通常どおり、1つの配列のソートルーチンを実装します。さて、ソートルーチンでは、要素を移動するたびに、他の3つの配列で同じことをして、常に同期しています。ルーチンが完了すると、4つの配列すべてがその1つに従ってソートされます。 それ以外の場合は、より良いプログラミング言語に切り替えることができるかどうかを確認してください... – Asik