ヒープソートで降順に並べるには?


匿名希望  2005-06-10 00:56:07  No: 122391

初めまして、VB6.0を最近始めたものです。
今、VB6で数字をヒープソートで降順にソートしたいのですが、うまくいきません。Webで探しましたが見つかりませんでした。どのようにしたらうまくいくかお教え下さい。宜しくお願いします。


花ちゃん  2005-06-10 01:14:54  No: 122392

>今、VB6で数字をヒープソートで降順にソートしたいのですが、うまくいきません。
どううまくいかないのでしょうか?

>Webで探しましたが見つかりませんでした。
探さないから見つからないのでしょう。探せばいくらでも見つかります。
http://tinyurl.com/dtxus

その内のひとつ  http://www.bcap.co.jp/hanafusa/VBHLP/fil_Sort.htm

>どのようにしたらうまくいくかお教え下さい。
うまくいかない部分をうまくいくように修正すればうまくいきます。
貴方が質問する時に 5W1H 入れるようにして質問しないとこのような
答えしか書けない(何がうまくいかなくて、それのどこが解らないのか
誰も解らない)でしょう。


いな  2005-06-10 01:15:49  No: 122393

気のせいかな?
http://tinyurl.com/bql64


いな  2005-06-10 01:18:17  No: 122394

花ちゃんさんとかぶった。

>ヒープソートのサンプルが、Webで無いわけがない!
>常識で考えましょう!

っていうか、今まで希望のものを探せたことありますか?


匿名希望  2005-06-10 01:42:47  No: 122395

花ちゃんさん、いなさんこんにちは。
>貴方が質問する時に 5W1H 入れるようにして質問しないとこのような答えしか書けない(何がうまくいかなくて、それのどこが解らないのか誰も解らない)でしょう。

ソースコード書くのを忘れてました。
Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
Dim temp As Integer

j = 6
For i = 0 To 6
    temp = List2.List(i)
    List2.List(i) = List2.List(j)
    List2.List(j) = temp
    Call Heap(1, j - 1)
    j = j - 1
Next
End Sub

Private Sub Heap(a, c As Integer)
Dim b As Integer
Dim temp As Integer
    b = 2 * a
    If c >= b Then
        If (List1.List(b) < List1.List(b + 1)) And (c > b + 1) Then
            b = b + 1
        End If
        If List1.List(a) < List1.List(b) Then
            temp = List2.List(a)
            List2.List(a) = List2.List(b)
            List2.List(b) = temp
            Call Heap(b, c)
        End If
    End If
End Sub

変換ボタンを押しても永遠にソートしてくれません。(数字は動くのですが・・・)
どうしたら出来ますか?宜しくお願いします。


花ちゃん  2005-06-10 17:14:21  No: 122396

先に提示したリンク先のコードはご覧になられなかったのですか?

  http://www.bcap.co.jp/hanafusa/VBHLP/fil_Sort.htm

  上記を試してから質問するようにして下さい。

貴方が投稿されたコードは、誰が書いたものですか?
ご自分で書いた物なら、求めている値が各変数に入っているか
ご自分で調べて下さい。

他人が書かれたコードなら無断でペーストされたりすると・・・・。


通ってみた  2005-06-10 19:28:23  No: 122397

内容とはまったく無縁で申し訳ないのだが

>>j = 6
>>For i = 0 To 6
>>    temp = List2.List(i)
>>    List2.List(i) = List2.List(j)
>>    List2.List(j) = temp
>>    Call Heap(1, j - 1)
>>    j = j - 1
>>Next

気のせいか、jという変数がムダな気がするが・・・このような組み方が一般的なのだろうか

自分ならjの部分は6-iにするけどなぁ


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加