質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Q&A

0回答

314閲覧

クイックソートのプログラム修正

kannnn

総合スコア3

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

0グッド

0クリップ

投稿2022/06/28 01:58

クイックソートについて質問です。下記の関数を用いてクイックソートのプログラムを書きました。ここには記載していませんがほかにもバブルソートなどのソートを書き実際に動かしてみたのですが、クイックソートのみが正常に動きませんでした。再起呼び出しを用いた関数DivisionSort()について、修正点ありましたらよろしくお願いします。

Public

1 Dim Data() As Integer 2 Dim StartData() As Integer 3 4 Private Sub GenerateData(ByVal numOfData As Integer) 5 ReDim Data(numOfData) 6 Dim r As New System.Random 7 For i As Integer = 1 To numOfData 8 Data(i) = r.Next(1, 100001) 9 Next 10 End Sub 11 12 Private Sub saveData() 13 ReDim StartData(Data.Length) 14 For i As Integer = 1 To Data.Length - 1 15 StartData(i) = Data(i) 16 Next 17 End Sub 18 19 Private Sub loadData() 20 For i As Integer = 1 To Data.Length - 1 21 Data(i) = StartData(i) 22 Next 23 End Sub 24 25 Private Sub PrintData(ByVal Obj As Object) 26 Obj.Clear() 27 Dim sb As New System.Text.StringBuilder(7 * Data.Length) 28 For i As Integer = 1 To Data.Length - 1 29 sb.Append(Data(i) & vbCrLf) 30 Next 31 Obj.text = sb.ToString 32 End Sub 33 34 Private Sub QuickSort() 35 DivisionSort(1, Data.Length - 1) 36 End Sub 37 38Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 39 GenerateData(20) 40 saveData() 41 PrintData(TextBox1) 42 End Sub 43 44 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 45 loadData() 46 insertionSort() 47 PrintData(TextBox2) 48 End Sub 49 50 Private Sub DivisionSort(minNo As Integer, maxNo As Integer) 51 Dim i As Integer = minNo 52 Dim j As Integer = maxNo 53 Dim pivot As Integer = Data(Int((minNo + maxNo) / 2)) 54 Dim temp As Integer 55 While True 56 While Data(i) < pivot 57 i += 1 58 End While 59 60 While pivot < Data(j) 61 j -= 1 62 End While 63 64 If i >= j Then Exit While 65 66 If (i <= j) Then 67 temp = Data(i) 68 Data(i) = Data(j) 69 Data(j) = temp 70 i += 1 71 j -= 1 72 End If 73 74 If minNo < i - 1 Then 75 DivisionSort(minNo, i - 1) 76 End If 77 78 If j + 1 < maxNo Then 79 DivisionSort(j + 1, maxNo) 80 End If 81 End While 82 End Sub 83 84 Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click 85 loadData() 86 QuickSort() 87 PrintData(TextBox2.Text) 88 End Sub 89End Class

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問