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

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

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

このソートで合ってますか?

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

■96333 / inTopicNo.1)  このソートで合ってますか?
  
□投稿者/ ゆい (17回)-(2020/11/12(Thu) 09:54:20)

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

score値でdatもソートしたいのですが上手く行きません。
お願いします。

            Dim dat(100) As String
            Dim score(100) As Single
            For Loop1 = 1 To datS
                For Loop2 = 0 To datS - Loop1
                    If score(Loop2) < score(Loop2 + 1) Then
                        Dim temp As Single = score(Loop2)
                        Dim tempD As String = dat(Loop2)
                        score(Loop2) = score(Loop2 + 1)
                        dat(Loop2) = dat(Loop2 + 1)
                        score(Loop2 + 1) = temp
                        dat(Loop2 + 1) = tempD
                    End If
                Next
            Next

引用返信 編集キー/
■96334 / inTopicNo.2)  Re[1]: このソートで合ってますか?
□投稿者/ Hongliang (1112回)-(2020/11/12(Thu) 10:06:19)
datとscoreを別々の配列にするのではなくて、datとscoreを持ったクラスを作り、その配列で管理するのがお勧めですが…。

簡単には、Array.Sortでソートできます。
このメソッドは配列を2つ渡した場合、第1引数をソートし、同時に同じインデックスの第2引数の要素を第1引数と同じ位置に移動させます。
Array.Sort(score, dat)
引用返信 編集キー/
■96337 / inTopicNo.3)  Re[1]: このソートで合ってますか?
□投稿者/ furu (94回)-(2020/11/12(Thu) 10:23:53)
No96333 (ゆい さん) に返信
> score値でdatもソートしたいのですが上手く行きません。
どう上手くいかないですか?
scoreはソートされるのにdatはソートされていない?
ソート自体が上手くいっていない?

考えたとおりにプログラムして
どうしても上手くいかない場合
再現性があればデバッグでおっかけたほうがいいです。

dat(3),score(3)ぐらいでやれば
すぐに思ってたのと違う動きするのが
わかります。
引用返信 編集キー/
■96338 / inTopicNo.4)  Re[2]: このソートで合ってますか?
□投稿者/ ゆい (18回)-(2020/11/12(Thu) 12:24:54)
No96334 (Hongliang さん) に返信
> datとscoreを別々の配列にするのではなくて、datとscoreを持ったクラスを作り、その配列で管理するのがお勧めですが…。

それもあるのですが。


> 簡単には、Array.Sortでソートできます。
> このメソッドは配列を2つ渡した場合、第1引数をソートし、同時に同じインデックスの第2引数の要素を第1引数と同じ位置に移動させます。
> Array.Sort(score, dat)

具体的にはどうするのですか?
第1引数をソートしたいです。

引用返信 編集キー/
■96339 / inTopicNo.5)  Re[3]: このソートで合ってますか?
□投稿者/ Hongliang (1113回)-(2020/11/12(Thu) 12:27:00)
> それもあるのですが。
どれもあるのでしょう。

>>Array.Sort(score, dat)
>
> 具体的にはどうするのですか?
> 第1引数をソートしたいです。
これ以上どう具体的に書けばいいのか見当もつかないです…。
引用返信 編集キー/
■96340 / inTopicNo.6)  Re[4]: このソートで合ってますか?
□投稿者/ ゆい (19回)-(2020/11/12(Thu) 12:32:51)
No96339 (Hongliang さん) に返信
>>それもあるのですが。
> どれもあるのでしょう。
>
> >>Array.Sort(score, dat)
>>
>>具体的にはどうするのですか?
>>第1引数をソートしたいです。
> これ以上どう具体的に書けばいいのか見当もつかないです…。

すみません。
これだけで第1引数のscoreでのソートも出来て、それと一緒にdatも並び替えられもしてるのでしょうか?

引用返信 編集キー/
■96341 / inTopicNo.7)  Re[5]: このソートで合ってますか?
□投稿者/ kiku (205回)-(2020/11/12(Thu) 13:05:47)
No96340 (ゆい さん) に返信
> これだけで第1引数のscoreでのソートも出来て、それと一緒にdatも並び替えられもしてるのでしょうか?

その質問の回答はHongliangさんはすでにコメントしていますので
読んでください。

また、聞かなくても実際に動作させれば、すぐ確認できることだと思います。

横から失礼致しました。
引用返信 編集キー/
■96342 / inTopicNo.8)  Re[6]: このソートで合ってますか?
□投稿者/ ゆい (21回)-(2020/11/12(Thu) 13:16:31)
No96341 (kiku さん) に返信
> ■No96340 (ゆい さん) に返信
>>これだけで第1引数のscoreでのソートも出来て、それと一緒にdatも並び替えられもしてるのでしょうか?
>
> その質問の回答はHongliangさんはすでにコメントしていますので
> 読んでください。
>
> また、聞かなくても実際に動作させれば、すぐ確認できることだと思います。
>
> 横から失礼致しました。

上手く行かなかったのでお尋ねしたのです。
でも出来るとのことなのでもう一度確認もしてみます。
ありがとうございました。
解決済み
引用返信 編集キー/
■96344 / inTopicNo.9)  Re[7]: このソートで合ってますか?
□投稿者/ Hongliang (1114回)-(2020/11/12(Thu) 13:33:18)
> 上手く行かなかったのでお尋ねしたのです。

上手くいかなかったのであれば、その試してみたコードを提示して、
「こういうコードを書いてみたがこういう結果になった、何故か」
という風に書いていただければ良いかと思います。
隣の席にいるわけではないので、書いていただけなければ質問者さんが
試してみたかどうかも分かりません。

ちなみにコードを提示する場合は回答者が確認しやすい形にしていただければ
追試もしやすく回答もつけやすくなります。
今回であれば、datとscoreの件数を制限して直接埋め込むなど。

Dim dat() = {"a", "b", "c"}
Dim score() = {10.3F, 20.4F, 3.0F}
Array.Sort(score, dat)
For i = 0 To score.Length - 1
    Trace.WriteLine(String.Format("{0}={1}", dat(i), score(i)))
Next

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ