• ベストアンサー

配列に入っている値のソート

str(1)="bbb" str(2)="aaa" str(3)="ddd" str(4)="eee" str(5)="ccc" という配列があるとします。 これを昇順にソートさせて、 str(1)="aaa" str(2)="bbb" str(3)="ccc" str(4)="ddd" str(5)="eee" とさせたいのですが、どのようにすればよろしいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#111860
noname#111860
回答No.1

ソートアルゴリズムにクイックソートでよいならば http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_t06.htm

brhmn
質問者

お礼

ご回答ありがとうございます。 参考にさせて頂きます。

その他の回答 (3)

noname#140971
noname#140971
回答No.4

Private Sub コマンド0_Click()   Dim S(5) As String   S(0) = "" ' <--- 必須   S(1) = "bbb"   S(2) = "aaa"   S(3) = "ddd"   S(4) = "eee"   S(5) = "ccc"   QSort S(), 0, 5   Debug.Print S(1)   Debug.Print S(2)   Debug.Print S(3)   Debug.Print S(4)   Debug.Print S(5) End Sub [イミディエイト] aaa bbb ccc ddd eee このように何らかのソート関数を使うと良いと思います。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <html> <title>クイックソート</title> <meta http-equiv="Content-script-Type" content="type"> <script type="text/javascript">  function qsort(v, left, right) {   var i, last;   if (left >= right)    return;   swap(v, left, Math.round((left + right) / 2));   last = left;   for (i=left + 1; i <= right; i++)    if (v[i] < v[left])     swap(v, ++last, i);   swap(v, left, last);   qsort(v, left, last - 1);   qsort(v, last + 1, right);  }  function swap (v, i, j) {   var temp;   temp = v[i];   v[i] = v[j];   v[j] = temp;  } </script> <body> <script>  <!--   var v = new Array("10","20","11","19","12","18","13","17","14","16","15");   qsort(v, 0, 10);   for (i = 0; i < 11; i++)    document.write(v[i], "<br/>");  //--> </script> </body> </html> これは、「プログラミング言語C」162頁に紹介されているクイックソートです。 ところで、冒頭のVB版の文字列用のクイックソートでは StrComp関数を使っています。 ' 左から比較する Do   I = I + 1 Loop While (StrComp(Datas(I), Part) = -1) ' 右から比較する Do   J = J - 1 Loop While (StrComp(Datas(J), Part) = 1)

brhmn
質問者

お礼

ご回答ありがとうございます。 参考にさせて頂きます。

  • noah7150
  • ベストアンサー率46% (116/251)
回答No.3

ソートには幾つかの手法があります 構文を書いてしまうと勉強にならないので言葉で 手法1. 配列の1と2を比較して2が小さければ入れ替える 次に2と3を、3と4を..最後まで終わればもう一度1と2を 繰り返し中に入れ替えが起こらなければソート完了。 これだとループは1から配列最大-1までと その上に入れ替えが起こったかのフラグの判断の無限ループ 手法2. 配列1と2から5を比較し小さければ入れ替える 配列2と3から5を比較し小さければ入れ替える その繰り返し かな

brhmn
質問者

お礼

ご回答ありがとうございます。 参考にさせて頂きます。

回答No.2

VB.NETならこれで。 System.Array.Sort(str)

brhmn
質問者

お礼

ご回答ありがとうございます。 参考にさせて頂きます。

関連するQ&A