C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 並び替えについて


(過去ログ 131 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■77384 / inTopicNo.1)  並び替えについて
  
□投稿者/ ひろみ (1回)-(2015/10/16(Fri) 00:23:00)

分類:[VB.NET/VB2005 以降] 

ソートについて質問します。
Microsoft Visual Basic 2010 Express を使用しています。
http://monolio.com/memo/vb-net/array-sort/
を参考にして以下を作成しました。

二つが連動して並び替えされて
 熊本 2.21
 佐賀 2
 福岡 1.553
 宮崎 1.025
 大分 0.12
とソートさせたいのですが、
 大分2.21
 宮崎2
 福岡1.553
 佐賀1.025
 熊本0.12
となってしまいます。
あまり、知識がなく行き詰ってしまいました。
回答いただけましたら助かります。


    Dim intNum() As Double
Dim strMoji() As String
Dim z As Integer


For z = 0 To 4

ReDim Preserve intNum(z)
ReDim Preserve strMoji(z)

If z = 0 Then intNum(z) = 1.553
If z = 1 Then intNum(z) = 1.025
If z = 2 Then intNum(z) = 2
If z = 3 Then intNum(z) = 2.21
If z = 4 Then intNum(z) = 0.12

If z = 0 Then strMoji(z) = "福岡"
If z = 1 Then strMoji(z) = "宮崎"
If z = 2 Then strMoji(z) = "佐賀"
If z = 3 Then strMoji(z) = "熊本"
If z = 4 Then strMoji(z) = "大分"


Next z


Array.Sort(intNum, strMoji)
Array.Reverse(intNum)

For z = 0 To 4
Debug.WriteLine(strMoji(z) & intNum(z))
Next
引用返信 編集キー/
■77385 / inTopicNo.2)  Re[1]: 並び替えについて
□投稿者/ 魔界の仮面弁士 (530回)-(2015/10/16(Fri) 01:09:03)
No77384 (ひろみ さん) に返信
> Dim intNum() As Double

Double 型の配列なのに、intNum という名前なのですか?


> If z = 0 Then intNum(z) = 1.553
> If z = 1 Then intNum(z) = 1.025

これって、ループさせる意味がありますか?
そのまま
  intNum(0) = 1.553
  intNum(1) = 1.025
の方がすっきりするとおもいますが…。



> Array.Sort(intNum, strMoji)

上記の処理では、並び替えに使われるデータは intNum 側です。
strMoji は、それに連なって並び替えられるため、この時点で

 0 => 0.12 大分
 1 => 1.025 宮崎
 2 => 1.553 福岡
 3 => 2.0 佐賀
 4 => 2.21 熊本

に並び変わります。


> Array.Reverse(intNum)

続けて上記を実行することで、intNum 側だけが逆順になります。
すなわち
 0 => 2.21 大分
 1 => 2.0 宮崎
 2 => 1.553 福岡
 3 => 1.025 佐賀
 4 => 0.12 熊本
ですね。


> 二つが連動して並び替えされて
>  熊本 2.21
>  佐賀 2
>  福岡 1.553
>  宮崎 1.025
>  大分 0.12
> とソートさせたいのですが、

であれば、Array.Reverse(intNum) だけではなく、
Array.Reverse(strMoji) も呼ばないと駄目ですね。
引用返信 編集キー/
■77389 / inTopicNo.3)  Re[2]: 並び替えについて
□投稿者/ ひろみ (2回)-(2015/10/16(Fri) 09:55:26)
魔界の仮面弁士様ご回答ありがとうございます。
希望通り動作して解決しました。

理屈はまだ理解できませんが本当に助かりました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -