喫茶XRAYトップページ
[
スレッド全体
]
[7286]
Re2:StringList ソートの速さ比べ
返信
削除
2014/3/1 (土) 11:10:46
taki
▼ たてぐやさん
> 私はこんなコードを長年使っています。参考になれば。
たてぐやさん ありがとうございます。
でも、残念ながら私の能力不足のためコードが読み解けません。(T_T)
str_St1.Assign(Grid.Cols[SortCol]);とかは分かります。
ソートのKeyとなるデータをstr_St1にコピーしているのですね。
for int_i := 1 To Grid.FixedRows Do str_St1.Delete(0);は見出しの
部分を取り除いて…
for int_i := 0 to str_St1.Count - 1 do
str_St1.Strings[int_i] := str_St1.Strings[int_i] +
#1 + Format('%.10d',[int_i]);
ではKeyとなるデータの後に#1とIndexをくっつけて記憶して…
次に、str_St2.Assign(Grid.Rows[int_i]);では
Gridの行のデータ(レコード単位)をStr_St2にコピーして、
str_St1.Objects[int_i - Grid.FixedRows] := str_St2;で
それをオブジェクトとしてStringListに代入?して・・・
つまり、Str_St1にはKeyの文字列とGridの行のデータを持った状態で
Str_St1.Sortする?
その後、
Grid.Rows[int_i].Assign(TStringList(str_St1.Objects[int_i -
Grid.FixedRows]));では
str_St1に保存したオブジェクトをTStringListとして取り出して
さらにGridのRowデータとしてコピー(書き換え)する。
で、正しいでしょうか?
[7287]
Re3:StringList ソートの速さ比べ
返信
削除
2014/3/1 (土) 11:30:35
taki
えっ!
> for int_i := 0 to str_St1.Count - 1 do
> str_St1.Strings[int_i] := str_St1.Strings[int_i] +
> #1 + Format('%.10d',[int_i]);
> ではKeyとなるデータの後に#1とIndexをくっつけて記憶して…
>
#1 + Format('%.10d',[int_i]) の部分の役割が…
[7292]
Re4:StringList ソートの速さ比べ
返信
削除
2014/3/2 (日) 21:41:15
たてぐや
▼ takiさん
最初に謝ってしまいます。これは私が書いたコードではありません。7年くら
い前に必要生じて、Webで見つけたコードです。ですので、私も読み解いてはい
ません。実際に使ってみたら、思い通りの動作をしてくれるし、汎用性がある
ので、よく使う手続きや関数をまとめたMylib.pasにインプリメントしています。
[7293]
Re4:StringList ソートの速さ比べ
返信
削除
2014/3/3 (月) 08:27:34
TS
▼ takiさん
良く見ていませんが
>#1 + Format('%.10d',[int_i]) の部分の役割が…
これで同じデータが続いた場合、そのデータ分の元の行の順番は
保たれると思います。
[7294]
Re5:StringList ソートの速さ比べ
返信
削除
2014/3/3 (月) 16:15:29
taki
▼ TSさん
> これで同じデータが続いた場合、そのデータ分の元の行の順番は
> 保たれると思います。
了解です。
[7295]
Re6:StringList ソートの速さ比べ
返信
削除
2014/3/3 (月) 16:22:48
TS
▼ takiさん
ちなみに私はDelFusaさんのサイトのNifty の FDELPHI のサンプル蔵アーカイブ
内の下記を使わせてもらっています。
StringGridの並べ替え(2重)
http://
delfusa.
main.
jp/
delfusaf
loor/
archive/
www.
nifty.
ne.
jp_forum
_fdelphi
/
samples/
00092.
html
[7297]
Re7:StringList ソートの速さ比べ
返信
削除
2014/3/3 (月) 18:25:02
Mr.XRAY
こんなのもありますね.
データ量にもよりますが,バブルソートが早いのかな ?
[StringGrid でソートをしたい(1)]
http://
hp.
vector.
co.
jp/
authors/
VA015850
/
delphi/
tips/
grid05.
html
[StringGrid でソートをしたい(2)]
http://
hp.
vector.
co.
jp/
authors/
VA015850
/
delphi/
tips/
grid06.
html
[StringGrid でソートをしたい(3)]
http://
hp.
vector.
co.
jp/
authors/
VA015850
/
delphi/
tips/
grid07.
html
ソートはまだ研究がおこなわれている分野のようです.
数年前に,新しいアルゴリズムの発表が,数学関係の分野であったようです.
[7299]
Re8:StringList ソートの速さ比べ
返信
削除
2014/3/4 (火) 10:22:10
おかぽん
▼ Mr.XRAYさん
> [StringGrid でソートをしたい(2)]
>
http://
hp.
vector.
co.
jp/
authors/
VA015850
/
delphi/
tips/
grid06.
html
> QuickSort は不安定なソートなので問題がある
との記載がありますけど、
> [StringGrid でソートをしたい(3)]
>
http://
hp.
vector.
co.
jp/
authors/
VA015850
/
delphi/
tips/
grid07.
html
>あ、関数ってポインタで引き渡せるんですよ(笑)
>知らなかった人、そういうものなんです(苦笑)
それなら、「複数列で比較できる関数」をポインタで渡すという解決方法を提示すれば、
QuickSortでもいいんじゃなかと思ったり、思わなかったり。
といいながら、「StringGrid でソートをしたい」の記事を参考にしたという
高速化されたソートの記事をコピペ
[高速マージソート]
http://
drang.
s4.
xrea.
com/
program/
tips/
list/
sort_mer
gesort.
html
高速化の方法を考えるのが楽しかった時代は、もはや過去の事。
今は、イカに楽して実現するかのほうが主体で、速度はなんて二の次になってます。
PCのスペックも向上したので、それほど気にしなくていいんですよ(たぶん)
[
▼次のスレッド
]
INCM/CMT
Cyclamen v3.82