探検
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
1デフォルトの名無しさん
2015/11/28(土) 18:51:38.86ID:Rc2MJzM/ なあ、再帰関数好きな人いる?
190デフォルトの名無しさん
2015/12/21(月) 18:43:17.30ID:u4st+H+L みなさん、これが「弄ってるって言いたいバカ」ですw
191デフォルトの名無しさん
2015/12/22(火) 08:48:59.73ID:kujr6tD9 迷信を信じ込んで再帰を否定してるバカが
深刻なデメリット(爆笑)、例えば
> 処理速度もはるかに遅くなる。
を、実証すればスレ終了するのに。
深刻なデメリット(爆笑)、例えば
> 処理速度もはるかに遅くなる。
を、実証すればスレ終了するのに。
192デフォルトの名無しさん
2015/12/22(火) 11:16:51.41ID:4uBr+2Cy 異様に伸びてると思ったら深刻な問題祭りかい
いくらでも例外は挙げられるけど
再帰で書こうがループで書こうが計算時間や空間計算量はそんなに変わらんから
書きやすく、読みやすい方で書いたほうが良いんじゃない?
そんなに変わらないって言うのは十分大きな入力に対して精々2〜3倍以下に納まるって意味だからね。
1時間掛かる処理を20マイクロ秒速くする為にごちゃごちゃ書き換えるのは結構な事だけど。
いくらでも例外は挙げられるけど
再帰で書こうがループで書こうが計算時間や空間計算量はそんなに変わらんから
書きやすく、読みやすい方で書いたほうが良いんじゃない?
そんなに変わらないって言うのは十分大きな入力に対して精々2〜3倍以下に納まるって意味だからね。
1時間掛かる処理を20マイクロ秒速くする為にごちゃごちゃ書き換えるのは結構な事だけど。
194デフォルトの名無しさん
2015/12/22(火) 14:08:14.84ID:dkSLpih8 はるかと言っても所詮定数倍でしょ。
しかも一桁違うケースは
関数呼び出しがやや高価なスクリプト系の言語でもほとんどないでしょ。
しかも一桁違うケースは
関数呼び出しがやや高価なスクリプト系の言語でもほとんどないでしょ。
195デフォルトの名無しさん
2015/12/22(火) 17:31:14.37ID:qPz15M1W >>193
いやね,絶対的に再帰でないと書けない,いや非常に書きにくいものはあるのは確かで.
たとえば代数式の解析を非再帰的で記述しろといわれると「はたして出来るのか??」と逡巡してしまう.
こういう話題があまり発展しないのはどうしたわけですかね
関係ないけどquick-sort を三項演算子とコンマ演算子で書く話題,誰か‥私は挫折した‥
いやね,絶対的に再帰でないと書けない,いや非常に書きにくいものはあるのは確かで.
たとえば代数式の解析を非再帰的で記述しろといわれると「はたして出来るのか??」と逡巡してしまう.
こういう話題があまり発展しないのはどうしたわけですかね
関係ないけどquick-sort を三項演算子とコンマ演算子で書く話題,誰か‥私は挫折した‥
196uy ◆Qawu9.2l1E
2015/12/22(火) 18:25:40.50ID:/7VurpfC 再帰の深刻なデメリットと言えば、コンパイラ設計者が甘えてる事によってバグを触ったり
異常に速度遅くなるパターンが放置されてたりする事
なんの言語とは言わないけど
異常に速度遅くなるパターンが放置されてたりする事
なんの言語とは言わないけど
197デフォルトの名無しさん
2015/12/22(火) 19:03:19.84ID:8Du/ashj それは再帰のデメリットではなくそういうクソコンパイラしかない言語のデメリット
198デフォルトの名無しさん
2015/12/22(火) 22:57:38.64ID:kujr6tD9200デフォルトの名無しさん
2015/12/22(火) 23:48:59.13ID:8Du/ashj >>199
食パン裏返してんのはお前のほうだよw
食パン裏返してんのはお前のほうだよw
201デフォルトの名無しさん
2015/12/22(火) 23:51:52.68ID:2TsBrERG202デフォルトの名無しさん
2015/12/23(水) 01:07:26.60ID:xKy7nhKt 食パンの裏はどっち側だよ
203デフォルトの名無しさん
2015/12/23(水) 01:25:49.85ID:zjRNfIWb >>201
こうするとなかなか興味深いことになるね。
本当に興味深いと思ってるだけで他意は無いよ。
fun_rec(){
if [ $1 -gt 5000 ] ; then
time fun_for
return
fi
fun_rec $(( $1 + 1 ))
}
こうするとなかなか興味深いことになるね。
本当に興味深いと思ってるだけで他意は無いよ。
fun_rec(){
if [ $1 -gt 5000 ] ; then
time fun_for
return
fi
fun_rec $(( $1 + 1 ))
}
204デフォルトの名無しさん
2015/12/23(水) 02:04:18.65ID:3NYqkGXc205デフォルトの名無しさん
2015/12/23(水) 07:21:41.71ID:fM9ORKUP206デフォルトの名無しさん
2015/12/23(水) 07:28:38.71ID:fM9ORKUP Cの場合は入った時にフレーム作成と出る時にフレーム復元
c86なら、レジスタ操作4ステップ(複合命令なら2ステップ)だ。
名前解決なんかリンク時に終わってる。
c86なら、レジスタ操作4ステップ(複合命令なら2ステップ)だ。
名前解決なんかリンク時に終わってる。
207デフォルトの名無しさん
2015/12/23(水) 08:47:35.90ID:2F8TsTF+ 最近の関数呼び出しは引数をスタックに積まずにレジスタ渡しみたいだから
再帰で何段ネストしちゃっててもレジスタに収まってる限りは爆速なんじゃね
再帰で何段ネストしちゃっててもレジスタに収まってる限りは爆速なんじゃね
208デフォルトの名無しさん
2015/12/23(水) 08:59:40.61ID:r+tlUph/ 名前解決まで計算時間に含めるなら
もう再帰云々じゃなくて長大な再帰なしの一つの関数で全部こなせって話になるんだがな
>>207
いや、そうはならない。
レジスタの退避が必要になるから、自己再帰するならどっちにしても同じだけpush/popは必要になる。
最適化が掛かったらその限りじゃないけど。
もう再帰云々じゃなくて長大な再帰なしの一つの関数で全部こなせって話になるんだがな
>>207
いや、そうはならない。
レジスタの退避が必要になるから、自己再帰するならどっちにしても同じだけpush/popは必要になる。
最適化が掛かったらその限りじゃないけど。
209デフォルトの名無しさん
2015/12/23(水) 09:02:09.80ID:QhR+qVh6210デフォルトの名無しさん
2015/12/23(水) 09:10:56.81ID:2F8TsTF+ >レジスタの退避が必要になるから
そうかなー
そうかなー
211デフォルトの名無しさん
2015/12/23(水) 09:15:53.17ID:fM9ORKUP >>209
スタッフフレームは再帰に必要なステップだから、再帰のペナルティとしてあえて受け入れた。
シェルスクリプトを持ち出した時点で「スタックは容量制限が厳しい(場合もある)リソース」
を自分で否定しちゃうところが再帰否定してるバカが低知能であるもう一つのエビデンス(笑)
(場合もある)を知らないのか、教わってないのか知らないが、全ての場合だと思い込んでるところもバカの、特徴だね。
スタッフフレームは再帰に必要なステップだから、再帰のペナルティとしてあえて受け入れた。
シェルスクリプトを持ち出した時点で「スタックは容量制限が厳しい(場合もある)リソース」
を自分で否定しちゃうところが再帰否定してるバカが低知能であるもう一つのエビデンス(笑)
(場合もある)を知らないのか、教わってないのか知らないが、全ての場合だと思い込んでるところもバカの、特徴だね。
212デフォルトの名無しさん
2015/12/23(水) 09:50:24.66ID:r+tlUph/ >>210
再帰で書いた何の変哲もないフィボナッチ関数をビルドしたケースを示すよ
https://gist.github.com/pixie-grasper/ba2d0ade523b8599c182
gccではr12を、clangではraxを、rbp/rbxの他に退避してるのが分かる。
再帰で書いた何の変哲もないフィボナッチ関数をビルドしたケースを示すよ
https://gist.github.com/pixie-grasper/ba2d0ade523b8599c182
gccではr12を、clangではraxを、rbp/rbxの他に退避してるのが分かる。
213デフォルトの名無しさん
2015/12/23(水) 11:20:43.15ID:2F8TsTF+ 対比先もレジスタにすればいいのにね
214デフォルトの名無しさん
2015/12/23(水) 11:25:42.60ID:r+tlUph/ そんな事をすると
既に退避させてある値を別なレジスタに退避させてから、退避させたい値を退避するコードを吐く羽目になるけど
レジスタが最低でも加算無限個無いと出来ないからね。仕方ないね。
既に退避させてある値を別なレジスタに退避させてから、退避させたい値を退避するコードを吐く羽目になるけど
レジスタが最低でも加算無限個無いと出来ないからね。仕方ないね。
215デフォルトの名無しさん
2015/12/23(水) 11:53:11.24ID:/Snk+v/P externしていないstatic関数とかならレジスタ渡しもふつうにある。
もちろんCランタイム・コンパイラによる
もちろんCランタイム・コンパイラによる
216デフォルトの名無しさん
2015/12/23(水) 12:07:45.20ID:r+tlUph/ >>215
いつの時代の話をしてるのか分からんのだけど、所謂Intel系の64bit環境(amd64)だとレジスタ渡しがデフォルトだよ。
https://en.wikipedia.org/wiki/X86_calling_conventions#List_of_x86_calling_conventions
いつの時代の話をしてるのか分からんのだけど、所謂Intel系の64bit環境(amd64)だとレジスタ渡しがデフォルトだよ。
https://en.wikipedia.org/wiki/X86_calling_conventions#List_of_x86_calling_conventions
217デフォルトの名無しさん
2015/12/23(水) 12:46:44.21ID:2bKYe5U2219デフォルトの名無しさん
2015/12/23(水) 16:35:42.36ID:u0B3Sjd8 だいたい再帰で問題が無いなんて
クイックソートで再帰が役に立たない事すら知らないってことか?
処理件数が増えたら速度の差なんて、何万倍どころじゃないし。
クイックソートで再帰が役に立たない事すら知らないってことか?
処理件数が増えたら速度の差なんて、何万倍どころじゃないし。
220デフォルトの名無しさん
2015/12/23(水) 16:37:36.04ID:xKy7nhKt >>219
何が言いたいのかわからん…
何が言いたいのかわからん…
222デフォルトの名無しさん
2015/12/23(水) 17:05:56.20ID:fM9ORKUP >>219
じゃ、これを10000倍高速化して実証してよ。
http://svnweb.freebsd.org/base/stable/10/lib/libc/stdlib/qsort.c?revision=256281&view=markup
じゃ、これを10000倍高速化して実証してよ。
http://svnweb.freebsd.org/base/stable/10/lib/libc/stdlib/qsort.c?revision=256281&view=markup
223デフォルトの名無しさん
2015/12/23(水) 17:15:03.86ID:2bKYe5U2 >>222
きったねえソースだな。どこの糞コード持ってきてんだ。
見せてやるよ、本気のクイックソートってやつをな。
void qsort(int a[], int left, int right)
{
int i, last;
if (left >= right)
return;
swap(a, left, (left + right) / 2);
last = left;
for (i = left + 1; i <= right; i++)
if(a[i] < a[left])
swap(a, ++last, i);
swap(a, left, last);
qsort(a, left, last - 1);
qsort(a, last + 1, right);
}
きったねえソースだな。どこの糞コード持ってきてんだ。
見せてやるよ、本気のクイックソートってやつをな。
void qsort(int a[], int left, int right)
{
int i, last;
if (left >= right)
return;
swap(a, left, (left + right) / 2);
last = left;
for (i = left + 1; i <= right; i++)
if(a[i] < a[left])
swap(a, ++last, i);
swap(a, left, last);
qsort(a, left, last - 1);
qsort(a, last + 1, right);
}
224デフォルトの名無しさん
2015/12/23(水) 17:27:00.65ID:fM9ORKUP >>223
10000倍高速化の比較対象はそれでも良いぞ。
10000倍高速化の比較対象はそれでも良いぞ。
225デフォルトの名無しさん
2015/12/23(水) 17:56:16.45ID:ZCUCTd42 一万倍とかwwww
どこをどうやったら一万倍差がつくんだ
どこをどうやったら一万倍差がつくんだ
226デフォルトの名無しさん
2015/12/23(水) 18:11:01.01ID:2bKYe5U2227uy ◆Qawu9.2l1E
2015/12/23(水) 18:27:35.24ID:PjxVSF2U アルゴリズムの抽象化に静的言語使うチンパンとか話にならないから(´・ω・`)
def qsort a , left , right
return if left >= right
swap a , left , (left + right) / 2
last = left
(left + 1).step(right) do |i|
if a[i] < a[left]
swap a , last+=1 , i
end
end
swap a , left , last
qsort a , left , last - 1
qsort a , last + 1, right
end
def qsort a , left , right
return if left >= right
swap a , left , (left + right) / 2
last = left
(left + 1).step(right) do |i|
if a[i] < a[left]
swap a , last+=1 , i
end
end
swap a , left , last
qsort a , left , last - 1
qsort a , last + 1, right
end
228デフォルトの名無しさん
2015/12/23(水) 18:50:34.28ID:fM9ORKUP229デフォルトの名無しさん
2015/12/23(水) 21:36:40.93ID:L95mHKNc230デフォルトの名無しさん
2015/12/23(水) 21:47:18.77ID:ZCUCTd42 万倍高速化はよwww
231デフォルトの名無しさん
2015/12/23(水) 22:10:25.42ID:fM9ORKUP ID:u0B3Sjd8
10000倍の高速化まだ? 常識的で簡単そうな口ぶりだったけど。
10000倍の高速化まだ? 常識的で簡単そうな口ぶりだったけど。
232デフォルトの名無しさん
2015/12/23(水) 22:12:02.95ID:fM9ORKUP 万は間違いだったとしても、最低でも倍速は楽勝なんだろ。
233デフォルトの名無しさん
2015/12/23(水) 22:29:26.28ID:zjRNfIWb234デフォルトの名無しさん
2015/12/23(水) 22:33:54.64ID:QhR+qVh6235デフォルトの名無しさん
2015/12/23(水) 22:55:30.83ID:zjRNfIWb いや、君に言ったわけじゃないし、最適化を教えてやれってことなんだけど。
236デフォルトの名無しさん
2015/12/23(水) 23:35:43.46ID:fM9ORKUP237デフォルトの名無しさん
2015/12/23(水) 23:43:11.94ID:QhR+qVh6238デフォルトの名無しさん
2015/12/23(水) 23:58:42.12ID:2bKYe5U2 >>237
あたりまえ
あたりまえ
239デフォルトの名無しさん
2015/12/24(木) 01:02:26.01ID:aanAAc0G240デフォルトの名無しさん
2015/12/24(木) 01:08:56.14ID:VDgCwlJn >>239
何を言っているのか意味がわからない…
何を言っているのか意味がわからない…
241デフォルトの名無しさん
2015/12/24(木) 06:51:58.79ID:2ShnOfV/ >>240
最悪パターンでもよいから、10000倍高速化しろよ。
最悪パターンでもよいから、10000倍高速化しろよ。
242uy ◆Qawu9.2l1E
2015/12/24(木) 08:02:14.94ID:Ecjqx/Av スキルない人間をいくら叩いても何も出てこないのに
ここは動物園かよ
ここは動物園かよ
243デフォルトの名無しさん
2015/12/24(木) 08:55:59.49ID:Q6U3kr4L 黒魔術師は再帰関数が大好き
244デフォルトの名無しさん
2015/12/24(木) 09:09:51.37ID:Zs2o0pyD 黒魔術師はマクロを生成するマクロも大好き
245デフォルトの名無しさん
2015/12/24(木) 11:57:48.07ID:2ShnOfV/ 再帰を必死に否定しているバカの主張
1 スタックが制限の厳しいリソースである環境が全てだと思い込み、再帰の致命的なペナルティだと主張する
2 シェル関数呼び出しをエビデンスとして、再帰が130倍遅いと主張する
3 再帰版のqsortは数万倍遅いと主張するが、数万倍速いはずの非再帰版を示さない
4 知能が低く再帰を理解できない。それをもって再帰は難解と主張する。
1 スタックが制限の厳しいリソースである環境が全てだと思い込み、再帰の致命的なペナルティだと主張する
2 シェル関数呼び出しをエビデンスとして、再帰が130倍遅いと主張する
3 再帰版のqsortは数万倍遅いと主張するが、数万倍速いはずの非再帰版を示さない
4 知能が低く再帰を理解できない。それをもって再帰は難解と主張する。
246デフォルトの名無しさん
2015/12/24(木) 14:54:05.30ID:QIUsopJK247デフォルトの名無しさん
2015/12/24(木) 16:38:25.55ID:2ShnOfV/248デフォルトの名無しさん
2015/12/24(木) 17:26:51.73ID:ri4CJahT 最初期は再帰をサポートしてなかった計算言語があるらしい
249デフォルトの名無しさん
2015/12/24(木) 18:44:44.88ID:W/SZtGXt 今はハードウェアレベルで再帰が実装されてるからな。
それを思えばいかに再帰が本質的にプログラミングに必要とされてるかってことだな。
それを思えばいかに再帰が本質的にプログラミングに必要とされてるかってことだな。
250デフォルトの名無しさん
2015/12/24(木) 20:04:26.21ID:aanAAc0G 計算可能性を探求する試みにおいて最初に出たのが、
エルブラン・ゲーデルの一般帰納関数だからね。
次がラムダ計算。
その次がノイマン型計算機直系の先祖であるチューリングマシン。
エルブラン・ゲーデルの一般帰納関数だからね。
次がラムダ計算。
その次がノイマン型計算機直系の先祖であるチューリングマシン。
251デフォルトの名無しさん
2015/12/24(木) 20:37:54.33ID:Hny3MC9I 10000倍だっておとなしいぐらい。
再帰だと落ちまくるから∞倍だって当たり前だろ。
再帰だと落ちまくるから∞倍だって当たり前だろ。
252デフォルトの名無しさん
2015/12/24(木) 20:46:14.21ID:W/SZtGXt メモリ足りないなら動かないのは再帰もループも変わらんだろ。
ループのほうが本質的にメモリ使用量少なくなるとかなら話は変わってくるが。
ループのほうが本質的にメモリ使用量少なくなるとかなら話は変わってくるが。
253デフォルトの名無しさん
2015/12/24(木) 20:58:31.47ID:2ShnOfV/ これだね。本当に知能が低い。
> 1 スタックが制限の厳しいリソースである環境が全てだと思い込み、再帰の致命的なペナルティだと主張する
> 1 スタックが制限の厳しいリソースである環境が全てだと思い込み、再帰の致命的なペナルティだと主張する
254デフォルトの名無しさん
2015/12/25(金) 18:57:10.38ID:IqCVGu/8 >再帰もループも変わらんだろ。
なんで試してみないんだ?
再帰とループでクイックソート
ループ方式なら、データが何千万件あろうと無問題
なんで試してみないんだ?
再帰とループでクイックソート
ループ方式なら、データが何千万件あろうと無問題
255デフォルトの名無しさん
2015/12/25(金) 19:44:32.39ID:TZMq+uAI >>254
ループのソース晒してみろや
ループのソース晒してみろや
256uy ◆Qawu9.2l1E
2015/12/26(土) 05:53:41.97ID:QzXIU7/C 覚えたての知識を使ってレスバトルするだけのスレなんていらねーから
257デフォルトの名無しさん
2015/12/26(土) 08:33:15.25ID:oIXuKyHb いらないスレを使って自分の意見を垂れ流すとか有効活用乙としか
258デフォルトの名無しさん
2015/12/26(土) 10:19:35.68ID:EXUTS9i+ そういう初心者の遊び場もあっていいと思うけどなあ
259デフォルトの名無しさん
2015/12/26(土) 12:54:13.38ID:KD7gR2Cz >>252
再帰の方は、関数呼び出し大量に発生するから、リターンアドレス待避とレジスタ待避に、メモリーが喰われる。
再帰の方は、関数呼び出し大量に発生するから、リターンアドレス待避とレジスタ待避に、メモリーが喰われる。
260デフォルトの名無しさん
2015/12/26(土) 13:36:54.41ID:oIXuKyHb >>259
ループの方は今どの範囲についてソートしているのかという情報が大量に発生するから同じ議論が成り立つ訳だが。
ループの方は今どの範囲についてソートしているのかという情報が大量に発生するから同じ議論が成り立つ訳だが。
261デフォルトの名無しさん
2015/12/26(土) 13:40:32.70ID:6n5NtJkM262sage
2015/12/26(土) 15:02:23.21ID:Igcba1qr263デフォルトの名無しさん
2015/12/26(土) 16:45:09.37ID:YV12MLKo >>262
再帰版でうまくいくのだったら非再帰版ではもっとうまくいく,という発想はないのかね?
再帰版でうまくいくのだったら非再帰版ではもっとうまくいく,という発想はないのかね?
264デフォルトの名無しさん
2015/12/26(土) 16:59:02.38ID:oIXuKyHb265デフォルトの名無しさん
2015/12/26(土) 17:27:47.02ID:Igcba1qr >>263
知能障害者って本当にかわいそう。
5000万件でソート出来てるってことは、「再帰はスタックあふれる」という迷信が嘘だという発想には至らないのかね。
クイックソートの深さの制御はすでに研究し尽くされてて、全然問題ないんだよ。
知能障害者って本当にかわいそう。
5000万件でソート出来てるってことは、「再帰はスタックあふれる」という迷信が嘘だという発想には至らないのかね。
クイックソートの深さの制御はすでに研究し尽くされてて、全然問題ないんだよ。
266デフォルトの名無しさん
2015/12/26(土) 17:37:15.54ID:Igcba1qr あっ、繰り返し版は10000倍速いんだっけ? (爆笑)
早く実装コードみたいなあ。
早く実装コードみたいなあ。
267デフォルトの名無しさん
2015/12/26(土) 18:11:47.33ID:6n5NtJkM268デフォルトの名無しさん
2015/12/26(土) 18:13:42.40ID:EXUTS9i+ シェルスクリプトを証拠として使うのは笑ってしまうからやめろ
269デフォルトの名無しさん
2015/12/26(土) 18:16:50.75ID:6n5NtJkM >>268
反論できないのな?じゃあお前の負けってことで。
反論できないのな?じゃあお前の負けってことで。
270デフォルトの名無しさん
2015/12/26(土) 18:22:25.08ID:EXUTS9i+ 野次飛ばしてる観客相手に勝利宣言も笑うからやめろ
おまえはプロレスのヒール役か
おまえはプロレスのヒール役か
271デフォルトの名無しさん
2015/12/26(土) 18:26:32.21ID:gy7QXsCA >高々定数倍
そんな安全なもんじゃあねぇ。
データが増えれば差も増大。
そんな安全なもんじゃあねぇ。
データが増えれば差も増大。
273デフォルトの名無しさん
2015/12/26(土) 18:41:57.44ID:Igcba1qr274デフォルトの名無しさん
2015/12/26(土) 18:47:36.31ID:Igcba1qr ちなみにglibcのqsort(これは非再帰)も同じ手法で自前スタックを管理してる
知能が低いって本当にかわいそう。
https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=stdlib/qsort.c;h=04c25b984f74a8f738233cc6da8a738b6437833c;hb=b8079dd0d360648e4e8de48656c5c38972621072
/* The next 4 #defines implement a very fast in-line stack abstraction. */
/* The stack needs log (total_elements) entries (we could even subtract
log(MAX_THRESH)). Since total_elements has type size_t, we get as
upper bound for log (total_elements):
bits per byte (CHAR_BIT) * sizeof(size_t). */
知能が低いって本当にかわいそう。
https://sourceware.org/git/?p=glibc.git;a=blob_plain;f=stdlib/qsort.c;h=04c25b984f74a8f738233cc6da8a738b6437833c;hb=b8079dd0d360648e4e8de48656c5c38972621072
/* The next 4 #defines implement a very fast in-line stack abstraction. */
/* The stack needs log (total_elements) entries (we could even subtract
log(MAX_THRESH)). Since total_elements has type size_t, we get as
upper bound for log (total_elements):
bits per byte (CHAR_BIT) * sizeof(size_t). */
275デフォルトの名無しさん
2015/12/26(土) 19:02:41.83ID:6n5NtJkM276デフォルトの名無しさん
2015/12/26(土) 19:08:33.46ID:YV12MLKo >>273
log n は発散するんだが‥
log n は発散するんだが‥
277デフォルトの名無しさん
2015/12/26(土) 19:09:07.52ID:oIXuKyHb >>275
バカはお前だ。シェルスクリプトでクイックソートを実装するなんて誰がするか。
sortプログラムを使え。
ちなみにシェルスクリプトの場合、関数呼び出しはそれ自体がスタックの深さをnとしてO(n^2)くらいの計算時間を持つっぽい。
バカはお前だ。シェルスクリプトでクイックソートを実装するなんて誰がするか。
sortプログラムを使え。
ちなみにシェルスクリプトの場合、関数呼び出しはそれ自体がスタックの深さをnとしてO(n^2)くらいの計算時間を持つっぽい。
278デフォルトの名無しさん
2015/12/26(土) 19:09:41.46ID:Igcba1qr279デフォルトの名無しさん
2015/12/26(土) 19:10:23.62ID:oIXuKyHb280デフォルトの名無しさん
2015/12/26(土) 19:11:25.60ID:6n5NtJkM >>277
実装できないのな?無理なのな?はい論破。
実装できないのな?無理なのな?はい論破。
281デフォルトの名無しさん
2015/12/26(土) 19:14:27.33ID:6n5NtJkM282デフォルトの名無しさん
2015/12/26(土) 19:14:30.05ID:Igcba1qr283デフォルトの名無しさん
2015/12/26(土) 19:16:21.04ID:oIXuKyHb >>280
練習のためなら兎も角、シェルスクリプト「だけ」でソーティングなんてやる意味が無い。
ループだろうと再帰だろうとね。
理由は遅いから。
ループで組んだとしても、非常に遅いから、実装するだけの意味が無い。
sortを呼べばCで書かれた非常に高速でスケーラブルなソーティングが出来るから、普通はそっちを使う。
さぁ君は一体何を論破したというのだい?
練習のためなら兎も角、シェルスクリプト「だけ」でソーティングなんてやる意味が無い。
ループだろうと再帰だろうとね。
理由は遅いから。
ループで組んだとしても、非常に遅いから、実装するだけの意味が無い。
sortを呼べばCで書かれた非常に高速でスケーラブルなソーティングが出来るから、普通はそっちを使う。
さぁ君は一体何を論破したというのだい?
284デフォルトの名無しさん
2015/12/26(土) 19:16:31.66ID:Igcba1qr285デフォルトの名無しさん
2015/12/26(土) 19:17:31.65ID:6n5NtJkM286デフォルトの名無しさん
2015/12/26(土) 19:21:05.64ID:oIXuKyHb >>281
ちょっと試せば分かることなんだけど、シェルスクリプトに於いて再帰の実行速度は
呼び出し深さnに対してO(n^2)くらい掛かる。
で、クイックソートの呼び出しの深さは要素数mについてO(log m)なので
O(log^2 m)の計算時間が再帰だけで掛かることになる。
つまり全体の計算量はO(m log^2 m)だ。
一方でループの場合にはO(m log m)掛かるから、その差はO(log m)だ。
この値はm=5000万、底2として約25だ。
つまり、理論上は再帰とループで25倍の差が開きうる。
そして君は10000倍違うと言う。
残り400倍はどうやって稼ぐんだい?
ちょっと試せば分かることなんだけど、シェルスクリプトに於いて再帰の実行速度は
呼び出し深さnに対してO(n^2)くらい掛かる。
で、クイックソートの呼び出しの深さは要素数mについてO(log m)なので
O(log^2 m)の計算時間が再帰だけで掛かることになる。
つまり全体の計算量はO(m log^2 m)だ。
一方でループの場合にはO(m log m)掛かるから、その差はO(log m)だ。
この値はm=5000万、底2として約25だ。
つまり、理論上は再帰とループで25倍の差が開きうる。
そして君は10000倍違うと言う。
残り400倍はどうやって稼ぐんだい?
287デフォルトの名無しさん
2015/12/26(土) 19:21:48.42ID:6n5NtJkM288デフォルトの名無しさん
2015/12/26(土) 19:23:23.36ID:PvF8tuZ2 霊がいるのかいないのかは判りませんが
人間の目が無いものを見ることがあるのは事実です
人間の目が無いものを見ることがあるのは事実です
289デフォルトの名無しさん
2015/12/26(土) 19:23:40.75ID:EXUTS9i+ 差は開くだろうけど比も開くのか?
レスを投稿する
ニュース
- 【速報】政府、与党がNISA未成年解禁を検討 ★2 [蚤の市★]
- 【TV】ファン5万人がガチで投票! プロ野球総選挙、栄えある1位は [牛丼★]
- 【*彡】巨人・坂本勇人 『流れ星に何を願うか』の質問に「結婚相手」と即答、結婚願望告白 女性ファンから歓声と悲鳴 [鉄チーズ烏★]
- へずまりゅう氏が言葉失う 街中で女性から「息子はあなたみたいな人間に育たぬよう教育しています」 [jinjin★]
- 【女子ゴルフ】都玲華(21)30歳年上の既婚者コーチとの交際関係とコーチ契約解消「昨年からお付き合いしてました。」 [阿弥陀ヶ峰★]
- 【おこめ】ベトナムから密輸のコメを「国産」と偽り販売容疑、ベトナム人ら2人追送検…300トン売って1億3000万円稼いだか 大阪 ★2 [ぐれ★]
- 高市早苗「いいから黙って全部アタシに投資しなさい!」国際金融会議で発言し周囲ドン引き [165981677]
- パニック障害ってどんな病気?
- 今日スクリプトいなくて快適じゃん
- プラトンの「哲人政治」は正しかったのでは? アホな大衆に政治家を選ばせるとロクなことにならない [653462351]
- 【悲報】台湾有事で米中衝突、最悪のシナリオは日本人死者「4,662人」 [237216734]
- Fate/GOスレ
