C言語なら俺に聞け 146

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 839f-AnMQ)
垢版 |
2018/04/30(月) 04:47:37.50ID:XX4FB8lc0
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/


C言語なら俺に聞け 144
https://mevius.5ch.net/test/read.cgi/tech/1514025223/

次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
-
※前スレ
C言語なら俺に聞け 145
http://mevius.5ch.net/test/read.cgi/tech/1519046038/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
472デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/28(土) 22:05:44.90ID:jbwKRPPF0
メモリマップドI/Oなんか簡単に消える
2018/07/29(日) 00:51:03.42ID:++N1yuL90
>>471
「レジスタ」って「CPUのレジスタ」だけじゃなくて「I/Oチップのレジスタ」って使い方もするよ
2018/07/29(日) 07:02:57.29ID:YD8oKrYq0
>>463を書くためにわざと>>459の質問しただろ
まあ確かにvolatileだと>>461ではダメ

明らかに初心者の質問に>>463の回答もどうかと思うが

idx = idx << 12; idx = idx ^ _data;
これで良い
2018/07/29(日) 07:15:13.10ID:YD8oKrYq0
質問というよりスレのレベルを見るための問題だな
>>468みたいな素人が見事に引っかかっちゃう
2018/07/29(日) 09:00:29.62ID:+KuOy2bC0
触らぬ質問に騒乱無し
477デフォルトの名無しさん (ワッチョイ 6f9f-53i4)
垢版 |
2018/07/29(日) 09:09:25.31ID:7lOBGcOb0
実は本物の初心者で volatile などというものの存在すら知らず最初の回答で全く問題なかったのだが
知識があるものが知識がある故にあらゆる妄想を膨らませまくって勝手に争って大混乱になり、
最初に質問した者は怖くなって素早く逃亡。このスレで質問するのは止めようと固く心に誓う。←いまここ
2018/07/29(日) 10:14:38.25ID:Ga4xmacd0
明示してないvolatileなんて考慮する必要ないわ
479デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 11:40:21.87ID:LQAkWqzt0
知恵遅れのクソニートが
またテキトーなこといってるわ

2ちゃんねるはどこのスレも同じだわ

クソニートはどこにでもいる

やっぱりなクソニート2ちゃんねるから
クソニートの駆除が必要
480デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 11:43:48.42ID:LQAkWqzt0
まずプロフェッショナルなカンペキなオレの回答の
どこがおかしいか
だれも指摘できてないからな
481デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 11:51:38.06ID:LQAkWqzt0
ちなみに知恵遅れどものテキトーな回答のどこがおかしいか
オレはすべて回答してる
ここも同じだ
2018/07/29(日) 11:58:20.56ID:1hBCvnSx0
夏休み?
483デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 11:59:21.49ID:LQAkWqzt0
プロフェッショナルの回答に
シロウトが口をはさむ余地はない

クソニートは毎日が夏休みだもんな
484デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 12:01:00.22ID:LQAkWqzt0
マジでなクソニートどもは身の程知らずなわけ
クソニートがまともな社会生活を送ってる社会人に勝てると思ってんの
2018/07/29(日) 12:08:05.09ID:Rgaf8fSN0
プロフェッショナルかなんか知らんけど組み込み系は苦手のようだな
486デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 12:09:43.67ID:LQAkWqzt0
な知恵遅れがオレのレスのどこがおかしいか指摘できない
指摘しようがないからな

なぜならスキのないカンペキなレスだからな

どこのスレでも知恵遅れが偉そうにしてるのは同じだ
487デフォルトの名無しさん (ワッチョイ 6f9f-YSnv)
垢版 |
2018/07/29(日) 12:09:51.76ID:7lOBGcOb0
>>480
何処で回答してんの?
488デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 12:11:10.71ID:LQAkWqzt0
>>470>>468 でおもいっきり回答してるわ
知恵遅れはなにが書いてあるか理解できない
489デフォルトの名無しさん (ワッチョイ 6f9f-YSnv)
垢版 |
2018/07/29(日) 12:12:34.88ID:7lOBGcOb0
>>488
それ回答になってねえじゃん。ちゃんと回答書けよ。
490デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 12:14:12.01ID:LQAkWqzt0
それが回答になってないなら
オマエのオツムに問題があるか
ただの仕事未経験のクソニートがなにも分からずテキトーなこといってるだけだからな

ただクソニートである確度が極めて高い
491デフォルトの名無しさん (ワッチョイ 6f9f-YSnv)
垢版 |
2018/07/29(日) 12:15:16.00ID:7lOBGcOb0
>>490
はいはい。おだいじに。
492デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 12:15:53.84ID:LQAkWqzt0
はい
クソニート図星
493デフォルトの名無しさん (ワッチョイ 6f9f-YSnv)
垢版 |
2018/07/29(日) 12:17:35.80ID:7lOBGcOb0
やはり気温40℃超えは人をおかしくするには十分な気温だったようだな。
猛暑も酷なことをするもんだ。合掌。
494デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 12:19:13.56ID:LQAkWqzt0
クソニートは家からでないから関係ないだろ
電気代も親に払ってもらってるからな

クーラーの電気代もパチョコンの電気代もな
親が払ってくれてんだぞ
2018/07/29(日) 12:33:12.40ID:Rgaf8fSN0
組み込み系の周辺チップの制御レジスタの仕様書見たことある?
制御レジスタの特定ビットのRead/Write動作そのものに意味があるんだよ
直に制御レジスタをアクセスしないと駄目
最適化でCPUレジスタの中で値を書き換えても無意味、周辺チップは何の動作もしない
volatileはそんな時にコンパイラの最適化を抑制するために使用する
例えば、
idx = (idx << 12) ^ _data;
の例で言えば、(idx<<12)の部分で実際にidxのアドレスにマップされたメモリの値が変更される
その後に最終的に、(idx << 12) ^ _dataの値が上書きされる
idxがvolatile宣言されていない場合は、途中の評価結果はCPUの内部レジスタだけで最適化されてマップされたメモリの値は最終評価結果の書き込みしか保証されない可能性がある

組み込みの制御レジスタの例としてPICのデータシートのリンクを貼っておく
ビット毎にR/Wでチップの機能を制御している様子が分かる
https://www.microchip.co.jp/download/index.php?Mode=4&;CategoryID=08ff3e00bf7fedc9fd6adb0aa9a3499b55a4aff3
496デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 12:46:01.14ID:LQAkWqzt0
最適化で、一瞬変わってたのが変わらなくなったらどうすんのとかいってるアホなこといってる知恵遅れに
その一瞬だけ変わってたコードが正しいコードとか
ホンキで思ってんのといってるだけだからな

そもそもvolatileついてなかったら
そのあと書き変わる保証すらどこにもない

そもそも保証がないコードのなんの保証をするわけ?

知恵遅れがいうことはさっぱり理解できないわ
2018/07/29(日) 12:47:08.34ID:XJOvENJB0
C++相談室 part137 あたりに書き込もうと思った悪態を
間違えてこちらに投稿したのに気づいたが引っ込みがつかなくなった、
という感じがしないでもない。

今までの自分の態度をかえりみると「誤爆しました、すまん」と
書くことも照れ臭いと思ってる、かも知れない。
おそらく俺の勘違い(嫉妬に基づく邪推)だろうけどネ。
498デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 12:48:26.49ID:LQAkWqzt0
あっちもこっちも
クソニートがえらそうにしてるからな

2ちゃんねるからクソニートの駆除は必要
499デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 12:50:28.71ID:LQAkWqzt0
むしろあっちでもこっちでも
オレは間違った回答は一切してないからな

すべてカンペキなレスだ

知恵遅れがテキトーなこといってるのは
あっちもこっちも同じ
2018/07/29(日) 12:57:17.34ID:Rgaf8fSN0
>>469
そりゃvolatileも万能ではないよ
最終的に確認するのは実機デバッグしかない
アセンブラで直接叩くしか解決できない場合もある
ICEで直接追跡しながらプログラムコードとチップの動作を確認するのが組み込みシステムの開発
ただしvolatileすら使わないのでは無駄に書き替え工数が膨れ上がる
最低限の対応はあらかじめ取っておくべき
2018/07/29(日) 12:57:38.10ID:Rgaf8fSN0
間違えた
>>498
2018/07/29(日) 13:10:28.41ID:x0a0gOqsM
>>498
このスレの誰もが真っ先にキミを駆除したがってるのに、天才のはずのキミが気づいてない?おかしいねぇ
503デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 13:14:35.44ID:LQAkWqzt0
クソニートのたまり場から
クソニートを駆除するだけだからな

部屋にいる人間の数より
南京虫やダニやノミの数のほうが多い
そういうスレだ
バルサン焚かないとなまともな人間がよりつかなくなる

その南京虫やダニやノミみたいなオマエを駆除するといってるわけ
わかった?
2018/07/29(日) 13:26:52.38ID:OHU95624d
>>500
今時、
SFRにアクセスする道具は整ってる
Cで書ける

標準の環境でない場合だけ心配すればいい
2018/07/29(日) 14:46:05.01ID:u6NN385t0
>>500
volatileの機能は明確に定義されていて
万能だとか頭の悪そうな話は必要ない

実機でデバッグしてコンパイラのバグが発覚することはあって
そのときの状況によってはアセンブラを使うこともあるが
アセンブラで「叩く」って言葉遣いは変だぜ
石を叩くのはCでもできるしな

ところで、おまえさんのところでは
JTAGじゃなくICEって言うのか
2018/07/29(日) 15:04:54.06ID:Rgaf8fSN0
>>505
インサーキットエミュレータ(In Circuit Emulator:ICE)だな
もっともC言語でプログラム組んでたのは7,8年前までだけどな
当時はルネサス変更前のNECの78K0や東芝のTLCS780、松下(パナソニック)のMN101なんかで組み込み開発をやってた
2018/07/29(日) 15:12:25.34ID:h14Y8Y+4d
volatileだって書いた通りに動く
コンパイラが信用できないときは逆アセンブルして確認する
実機デバッグしなければならないのは書いたやつが信用できないからで
volatileだからじゃないね
あとjtagはインターフェースのことでデバッガ自体は
ICEと呼ぶかな、うちも
2018/07/29(日) 15:40:41.02ID:OHU95624d
volatileをつけてコンパイラが(一見)正しいコードを生成しても
CPUが順番を変えて実行したりする

マルチコア、OoO時代は
同期コードを自分で書くのは色々な意味でやめた方が良い
SFRアクセスには使えるが
2018/07/29(日) 15:52:36.85ID:OHU95624d
>>507
本来の意味のICEなんて絶滅寸前
510デフォルトの名無しさん (アウアウカー Saef-2Ess)
垢版 |
2018/07/29(日) 17:56:25.83ID:VgN+++E0a
夏はアイスだよね〜
2018/07/29(日) 17:57:28.24ID:+KuOy2bC0
割り込み禁止って今のOSだと無意味?
2018/07/29(日) 18:45:23.92ID:Ga4xmacd0
>>511
普通に使ってると思うけど?
2018/07/29(日) 19:38:18.03ID:u6NN385t0
ユニプロセッサからマルチプロセッサへパラダイムシフトするにあたって
1つのCPUだけ割り込み禁止してもどうたらって話だろ
514デフォルトの名無しさん (アウアウカー Saef-2Ess)
垢版 |
2018/07/29(日) 20:17:45.56ID:VgN+++E0a
>>511
それはOS上で動くプログラムの受け取るシグナルの話?
それなら特定のやつ以外は禁止したり自分でハンドら書いたりできるわけだが。
そういう話ではない?
515デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 20:20:49.84ID:LQAkWqzt0
もしかして
ハードウェア割込とソフトウェア割込の違いすら分かってないのが
レスしてんのか
516デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 20:25:27.65ID:LQAkWqzt0
そもそもデバイスがCPUより超遅いことが分かってないようなのが
一瞬で値が変わってたのが、それが変わらなくなったらどうすんのとかいってるレベルだからな

ホントなコイツラの程度がイロイロと知れるわ
517デフォルトの名無しさん (スップ Sd52-SJhd)
垢版 |
2018/07/29(日) 20:25:43.86ID:QevJM+ENd
いい加減秋田
2018/07/29(日) 20:35:45.02ID:2vtczMQ4M
>>513
どの割込みの話ししてるのか良くわからんけど、デバイスからの割り込みって予め指定したプロセッサが受け取る実装が多いぞ
2018/07/29(日) 20:44:07.76ID:YD8oKrYq0
良くわからん人は素直に>>508の通りにしなさい
ここで一言で語れるような内容じゃないから
2018/07/29(日) 20:44:37.09ID:YD8oKrYq0
特に半角君
521デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 20:47:29.08ID:LQAkWqzt0
低学歴知恵遅れがドヤ顔で書いてるOoOの問題なんか
分かった上でオレはカンペキなレスしてるからな
522デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 20:48:20.64ID:LQAkWqzt0
もうねドヤ顔でレスしてるヤツの知能レベルが
致命的に低いワケ
2018/07/29(日) 20:50:38.73ID:YD8oKrYq0
完璧なヤツが遅いとか速いとか
ハード割り込みとかソフト割り込みとか
まったくとんちんかんwww

書けば書くほど痛い
524デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 20:51:15.80ID:LQAkWqzt0
はい低学歴のレス頂きました
525デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/29(日) 20:52:18.31ID:LQAkWqzt0
レスで簡単に判定できる
コイツはクソニート
コイツは低学歴

超簡単
2018/07/29(日) 20:55:32.94ID:u6NN385t0
ソフトウエア割り込みとかバカかw
センズリ野郎
527デフォルトの名無しさん (ガックシ 06ab-SJhd)
垢版 |
2018/07/30(月) 16:36:28.63ID:3BqaNEe76
キーボードから実数値を入力
3件のみを値が多い順に出力
最初にデータの件数(3件以上で、最大で100件とする)を入力
100件を超える場合、「エラー」と出力

ソートを使うみたいです。よろしくお願いします。
2018/07/30(月) 17:03:31.87ID:hdlApzlBd
int i, num, array[100];
printf("Number of numbers: ");
scanf("%d", &num);
for (i = 0; i < num; ++i)
{
printf("array[%d]: ", i);
scanf("%d", &array[i]);
}
...
2018/07/30(月) 17:04:07.39ID:hdlApzlBd
比較関数をqsortに渡せ。
2018/07/30(月) 17:56:36.84ID:n1wK/LR00
アレ? 蟻のarrayはint配列だけど、問題で要求してるのは実数値じゃね?
2018/07/30(月) 18:03:34.93ID:ehNSvi3pM
値が大きい順なのか
値の出現回数が多い順なのか
2018/07/30(月) 18:12:03.23ID:6ITjo5O70
arrayをdoubleかfloatの配列にしてくれ。すまん。
533デフォルトの名無しさん (アウアウカー Saef-2Ess)
垢版 |
2018/07/30(月) 18:38:36.45ID:xHVHgAPAa
夏休みの宿題か・・・
2018/07/30(月) 18:47:55.30ID:6X4H9pr00
floatならscanf/printfともに%f
doubleならscanfは%lfでprintfは%f
535デフォルトの名無しさん (アウアウカー Saef-2Ess)
垢版 |
2018/07/30(月) 18:57:52.63ID:xHVHgAPAa
100件入力しても最初の3件だけを大きい順ではなく多い順に並べると・・・
変な宿題だな。読み間違えてないか?
2018/07/30(月) 19:07:25.93ID:Ei1MMj+i0
入力データに重複を許し、その出現数をカウントしろとか?
2018/07/30(月) 19:26:58.25ID:aSIGzv/D0
上位3件
2018/07/30(月) 19:27:37.61ID:aSIGzv/D0
だろ
普通に考えて
539デフォルトの名無しさん (アウアウカー Saef-2Ess)
垢版 |
2018/07/30(月) 19:28:21.43ID:xHVHgAPAa
3件しかデータがないのに多い順となるとその内2件が同じ値でなければできない。
3件とも違うとか、あるいは3件とも同じなら並べかえる必要がない。
更に配列の先頭の二つが同じなら並べ変える必要がない。
それは既に多い順になっている。または全て同じ値だ。

とすると二番目の値と三番目の値を比較し、同じだったら最初の値と三番目の値を入れ換えれば良い。
三つとも全て同じ値の時に無駄な入れ換え処理をすることになるが、この程度はよかろう。
540デフォルトの名無しさん (アウアウカー Saef-2Ess)
垢版 |
2018/07/30(月) 19:29:45.17ID:xHVHgAPAa
>>537
知らんがな。
2018/07/30(月) 19:37:02.99ID:aSIGzv/D0
「3件のみを」は「出力」にかかる
「値が多い」だから出現回数順

「多い順」のソート対象は書いてないが
普通に考えれば入力した全数

これがおれの解釈
2018/07/30(月) 19:43:33.82ID:WDgnZ3L+0
出現頻度の上位3位分を出せ?

typedef double VAL_T;
struct {
 VAL_T val;
 int count;
} data[100] = { 0 };

線形探索して カウントアップして data[] を count をキーにソートして
data[0].val, data[1].val, data[2].val, を出力する
2018/07/30(月) 19:44:19.20ID:v5YMtZ310
整数値ではなくて実数値で出現回数って些か問題に無理がないか?
544デフォルトの名無しさん (アウアウカー Saef-2Ess)
垢版 |
2018/07/30(月) 19:56:43.56ID:xHVHgAPAa
>>541
その解釈が恐らく正しいと思うが、元の文章は素直に読むとそうならんよなあ。
2018/07/30(月) 19:58:59.40ID:WDgnZ3L+0
値の大きい順に上位3位なら
VAL_T data[100];

入力値をつっこんで data をソートして data[0], data[1], data[2], を出力する
int sortcmp(const void* c1, const void* c2)
{
 VAL_T d1 = *(const VAL_T*)c1;
 VAL_T d2 = *(const VAL_T*)c2;
 if (d1 > d2) return -1;
 else if (d1 < d2) return 1;
 return 0;
}

・・・・
qsort(data, num, sizeof(VAL_T), sortcmp);

for (i=0; i<3 && i<num; i++)
 printf("%d: %lg\n", i+1, (double)data[i]);
・・・・
2018/07/30(月) 20:08:25.88ID:aSIGzv/D0
>>544
そういう解釈も可能
2018/07/30(月) 20:10:45.97ID:aSIGzv/D0
色々な解釈が可能な文

仕様書からコードにするときには
複数の解釈が無いか気にした方が良い
548デフォルトの名無しさん (ササクッテロラ Sp47-SJhd)
垢版 |
2018/07/30(月) 20:17:02.90ID:kECQyXHfp
すみません。値が大きい順です。お願いします。
2018/07/30(月) 20:21:05.16ID:Ei1MMj+i0
良い試験問題だなw
2018/07/30(月) 20:23:08.08ID:aSIGzv/D0
ずこーっ

上位3個でqsortとか使うのはアホ
551デフォルトの名無しさん (アウアウウー Sa43-53i4)
垢版 |
2018/07/30(月) 20:25:48.38ID:r0zEs9EBa
ああ。sortコマンドとheadコマンド使いたくてうずうずする。
2018/07/30(月) 20:30:04.49ID:r0zEs9EBa
上位三つなら全部チェックすりゃあ良いんじゃないか?
ループとif文3つか?
2018/07/30(月) 20:39:55.63ID:WDgnZ3L+0
なんやソート使えという制限はないのか
554デフォルトの名無しさん (ワッチョイ 1680-1o86)
垢版 |
2018/07/30(月) 22:01:25.27ID:WHL4n1uA0
ココではquickselectというアリゴリズムを使いなさい
というのが正解

やっぱりなこのスレは浅はかなクルクルパーしかいないわ
2018/07/30(月) 22:06:32.60ID:Ei1MMj+i0
>>554
上位3名に入れそうだね?
2018/07/30(月) 22:17:34.44ID:aSIGzv/D0
quickselectもアホ
上位3個なら原始的なアルゴリズムが一番速い
2018/07/30(月) 22:18:31.28ID:aSIGzv/D0
速くて簡単でリソースも使わない
2018/07/30(月) 22:19:07.01ID:Z5guDo9v0
課題みたいだし
・バブルソートを書けるか
・保持する要素は3つでいいことに気付けるか
をみる定型問題だろね
2018/07/31(火) 08:53:15.13ID:CiY/UjgCK
アルゴリズムもわかってない
まず、問題解決のための適切なアルゴリズムの選択ができない

クイックソートは明らかに適切ではない
ここではクイックセレクトが適切

確かにこのスレには
まともな教育を受けたのはいない

基本的になにも知らなすぎる
白痴に近い
2018/07/31(火) 09:25:34.54ID:quzd6t9e0
クイックセレクトってどんなアルゴリズムなん?
元はクイックソートだけどソートしないで選択するだけって感じ?
561デフォルトの名無しさん (アウアウカー Saef-2Ess)
垢版 |
2018/07/31(火) 09:39:58.84ID:+/oTEV5Ja
>>560
無駄な比較をしない感じ
2018/07/31(火) 11:52:18.67ID:Sty7sRvnH
>>560
パーティショニングして目的の順位を含む方だけ再帰
2018/07/31(火) 12:06:11.93ID:TL2AM5+0M
あー、そういうことか
2018/07/31(火) 12:43:01.65ID:xftY0DAGd
明らかに上位3個の抽出には向かない
2018/07/31(火) 12:45:03.91ID:xftY0DAGd
最大値を探すのにクイックセレクトを使うアホはいない
そういうこと
3個でも同じ
566デフォルトの名無しさん (ワッチョイ 6f02-FeqO)
垢版 |
2018/07/31(火) 13:12:03.24ID:kZi5wZ5a0
入力毎に判定。
3プールのmin以下なら無視。
maxより大きいなら順位シフト。
mid以下ならmin上書き。
それいがいはmidをminにしてmid上書き。
2018/07/31(火) 13:17:53.66ID:xftY0DAGd
そういう原始的なアルゴリズムが最良
2018/07/31(火) 13:21:36.88ID:xftY0DAGd
最悪パターンは小さい順に並んだ時だが
これでもせいぜい数倍になるだけ

クイックセレクトの最悪値は酷い

もちろん典型例でも原始的アルゴリズムの方が速い
元データも変更不要
メモリも3個分だけ
2018/07/31(火) 13:29:26.70ID:NZiCEZHW0
1,ソート対象...data[5, 3, 12 ,8 ,6]
2,メモリをソート対象の最大値個数分確保...a[12]
3,ループでa[5]=data[5], a[3]=data[3]...と全部入れる
4.詰めてオシマイ

史上最速ソートだと思わないか?ループ1回で終わるどw
 
2018/07/31(火) 13:45:59.26ID:j6W8yzMq0
>>569
バケットソートだね〜
値の重複がある場合はリストをつなぐ必要があるし
今回の問題は要素が実数値だから不適になっちゃうけど
2018/07/31(火) 13:49:32.57ID:hTiFVqvS0
質問内容によるとソート対象は実数値なんだが
■ このスレッドは過去ログ倉庫に格納されています