掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
クイックソートの昇順と降順について (ID:120437)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
2次元配列のクイックソートを行う場合にソートされた配列が おかしいのです。 どうおかしいかと言うと以下のソースで取り出しを行いますが、 昇順のときは要素が1からで降順の場合は要素が0からになって しまいます。 取り出しのときに昇順と降順で変えれば問題は解決できるのでしょうが ソートの中で修正を行いたいと思っています。 何方かお願いいたします。 <環境> Win-Xp VB6 '** 取り出し For j = 1 To UBound(itmX()) Set itmY = SearchList.ListItems.Add(, , CStr(itmX(j, 0))) itmY.SubItems(1) = itmX(j, 1) Next j '** クイックソート昇順 Public Sub QuickSortA(d() As String, StartNum As Variant, EndNum As Variant) Dim i As Long Dim j As Long Dim strBase() As String Dim strTemp() As String ReDim strArray(EndNum, 2) ReDim strBase(1, 2) strArray(0, 1) = d((StartNum + EndNum) \ 2, 1) i = StartNum j = EndNum Do Do While d(i, 1) < strArray(0, 1) i = i + 1 Loop Do While d(j, 1) > strArray(0, 1) j = j - 1 Loop If i >= j Then Exit Do strBase(0, 0) = d(i, 0) strBase(0, 1) = d(i, 1) d(i, 0) = d(j, 0) d(i, 1) = d(j, 1) d(j, 0) = strBase(0, 0) d(j, 1) = strBase(0, 1) i = i + 1 j = j - 1 Loop If (StartNum < i - 1) Then QuickSortA d(), StartNum, i - 1 If (EndNum > j + 1) Then QuickSortA d(), j + 1, EndNum End Sub '** クイックソート降順 Public Sub QuickSortD(d() As String, StartNum As Variant, EndNum As Variant) Dim i As Long Dim j As Long Dim strArray() As String Dim strBase() As String ReDim strArray(EndNum, 2) ReDim strBase(1, 2) strArray(0, 1) = d((StartNum + EndNum) \ 2, 1) i = StartNum j = EndNum Do Do While d(i, 1) > strArray(0, 1) i = i + 1 Loop Do While d(j, 1) < strArray(0, 1) j = j - 1 Loop If i >= j Then Exit Do strBase(0, 0) = d(i, 0) strBase(0, 1) = d(i, 1) d(i, 0) = d(j, 0) d(i, 1) = d(j, 1) d(j, 0) = strBase(0, 0) d(j, 1) = strBase(0, 1) i = i + 1 j = j - 1 Loop If (StartNum < i - 1) Then QuickSortD d(), StartNum, i - 1 If (EndNum > j + 1) Then QuickSortD d(), j + 1, EndNum End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.