- 日時: 2011/04/08 12:10
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[文字列処理][アルゴリズム][] * * キーワード:アルゴリズム,並べ替える,小さい順(昇順),大きい順(降順),並び替え * ***********************************************************************************
------------------------------------------------------------------ ソート(前述3つ) 投稿者:ゆう(U) [1998/09/14(月)15:26分] ------------------------------------------------------------------
使用方法はすべて同じです。
Dim i As Long Dim lngArray() As Long ReDim lngArray(0 To 100) '(-1000 To -1)等のソートもOK
For i = LBound(lngArray) To UBound(lngArray) lngArray(i) = i Next i
s????Sort lngArray [, True|, False]
速度を比較すると 低速← sBubleSort > sHeapSort > sShellSort →高速 の順です。 ※しかしソートするデータによってはもっと良い(特化)したソート方法が 考えられます(一般的なデータではシェルソートが早いみたい)。
ヒープソートの添字に負を使用できるようにしている部分をなくすと 今より速度が上がると思いますが、良い考えが思い浮かばずこの様な コードになってしまいました(+ lngLowがいっぱいで見栄えが悪い)。
なお、ソートについてはVisualBasicマガジン7月号と河西朝雄著 C言語によるはじめてのアルゴリズム入門(技術評論社)を参考に しました。
※しかし、VBマガジン7月号に掲載されているコードではテストに 不十分な為、コードを手直ししないとあまり使えません。 或るソートでソート後別のソートを試しても配列はソート済みの為 ソート時間が公正では無くなる。
花ちゃん(さん)のヒープソートも試したのですが負の添字もOKなどの 仕様で移植しきれなかったので上記アルゴリズム入門を参考にして作成 しました。
Long型以外、ユーザー定義型の配列などは前回の投稿を参考にして 手直しして使用して下さい。
※この仕様(添字に負を許す)でこのコードより早いソート方法や コードの修正点などをご存知の方(気づかれた方)、その方法を 教えて下さい。
|