tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル2次元配列のソート
記事No418
投稿日: 2003/09/04(Thu) 14:31
投稿者JYUN
[OSのVer]:Windows2000    [VBのVer]:VB.NET 2003
2次元以上の配列のソートを行いたいのですが、Arrayクラスを使ってソートしようとしたら
1次元の配列しかソートすることができないみたいで・・・
2次元以上の配列のソートを行うことができる方法教えて下さい?
お願い致します。

[ツリー表示へ]
タイトルRe: 2次元配列のソート
記事No420
投稿日: 2003/09/04(Thu) 23:01
投稿者丸太
> [OSのVer]:Windows2000    [VBのVer]:VB.NET 2003
> 2次元以上の配列のソートを行いたいのですが、Arrayクラスを使ってソートしようとしたら
> 1次元の配列しかソートすることができないみたいで・・・

どんな型の配列ですか?
 数値?文字列?
どのような順番でソートしたいのでしょうか
 列毎?行毎?

[ツリー表示へ]
タイトルRe^2: 2次元配列のソート
記事No421
投稿日: 2003/09/05(Fri) 08:50
投稿者JYUN
[OSのVer]:Windows    [VBのVer]:VB.NET  
> どんな型の配列ですか?
文字列です。
> どのような順番でソートしたいのでしょうか
すべての配列の要素で行いたいのですができるのでしょうか?

[ツリー表示へ]
タイトルRe^3: 2次元配列のソート
記事No422
投稿日: 2003/09/05(Fri) 09:25
投稿者魔界の仮面弁士
2次元の矩形配列ではなく、2階層の1次元ジャグ配列にすれば良いのではないでしょうか。
これならば、Array.Sortでもいけるかと思います。


>> どのような順番でソートしたいのでしょうか
> すべての配列の要素で行いたいのですができるのでしょうか?

どのような仕様なのか、まだ見えてきません。

例えば、x(0,0) 〜 x(1,1) という範囲の配列があるとして、そこに、
"aaa", "ddd", "bbb", "ccc" という4つの文字列が格納されていたとします。

―――これを、『全ての配列の要素』としてソートした場合、データとしては、
"aaa", "bbb", "ccc", "ddd" と並び替えられる事にはなりますよね。ではそれを
2次元配列に再展開した際に、行・列、いずれの方向に並べかえたいのでしょうか?

具体的には、
  x(0,0) = "aaa"
  x(1,0) = "bbb"
  x(0,1) = "ccc"
  x(1,1) = "ddd"
のようにソートさせたいという事なのでしょうか…それとも、
  x(0,0) = "aaa"
  x(0,1) = "bbb"
  x(1,0) = "ccc"
  x(1,1) = "ddd"
となるようにさせたいという事なのでしょうか?

[ツリー表示へ]
タイトルRe^4: 2次元配列のソート
記事No423
投稿日: 2003/09/05(Fri) 09:49
投稿者JYUN
[OSのVer]:Windows    [VBのVer]:VB.NET
うまく説明できなくてすいません。

> 2次元の矩形配列ではなく、2階層の1次元ジャグ配列にすれば良いのではないでしょうか。
> これならば、Array.Sortでもいけるかと思います。

これはどういったことなのでしょうか?

-----------------------------------------------------
やりたいことは、下記のように行いたいのです。
X(2,2)の2次元の配列があり
データとして
X(0, 1) = "aaa"
X(0, 2) = "ccc"
X(1, 0) = "ddd"
X(1, 1) = "bbb"
が格納されていて、これらをソートして1次元の配列にしたいのです。
Y(0) = "aaa"
Y(1) = "bbb"
Y(2) = "ccc"
Y(3) = "ddd"
としたいのです。

[ツリー表示へ]
タイトルRe^5: 2次元配列のソート
記事No424
投稿日: 2003/09/05(Fri) 10:07
投稿者よねKEN
> やりたいことは、下記のように行いたいのです。
> X(2,2)の2次元の配列があり
> データとして
> X(0, 1) = "aaa"
> X(0, 2) = "ccc"
> X(1, 0) = "ddd"
> X(1, 1) = "bbb"
> が格納されていて、これらをソートして1次元の配列にしたいのです。

こういうことは一番最初に書いておきましょうよ。話がまったく違ってきます。

> Y(0) = "aaa"
> Y(1) = "bbb"
> Y(2) = "ccc"
> Y(3) = "ddd"
> としたいのです。

2次元配列をまず1次元配列にコピーしてからArray.Sortすればいいだけでは?

試していないので2次元配列が使えるかどうかわかりませんが、
Array.Copyメソッドで2次元→1次元のコピーができるかもしれません。(できないかもしれません)
できない場合は、地道にFor文でコピーして下さい。

[ツリー表示へ]