C言語なら俺に聞け(入門編)Part 131 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2015/11/22(日) 17:49:08.07ID:+9G59Pl/★前スレ
C言語なら俺に聞け(入門編)Part 130
http://peace.2ch.net/test/read.cgi/tech/1439071526/
★過去スレ
C言語なら俺に聞け(入門編)Part 129
http://peace.2ch.net/test/read.cgi/tech/1432674955/
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 168代目
http://peace.2ch.net/test/read.cgi/tech/1408962564/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
# サイズが大きい場合はアップローダ等を利用してください。
http://codepad.org/
http://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
【重要】
当たり前の事ですが、2chではコピペ荒らしは禁止されています
0002デフォルトの名無しさん
2015/11/22(日) 18:25:54.05ID:a00B+hc9疑問なんですが何故エクスプローラだとファイル探索に時間がかかるんですか?
N個のファイルがあった場合、全部調べても計算量はO(N)だと思うのですが、
何秒、何十秒とかかるのは何故でしょう?
C言語の文字列操作関数使ってエクスプローラに変わる機能が作りたいんですが
そもそも何故こんなにエクスプローラが使えないのか分かりません…
僕の使い方が悪いのかもしれませんが
0003デフォルトの名無しさん
2015/11/22(日) 18:26:37.05ID:a00B+hc9これ作れたら結構便利なんじゃないかと。
0004デフォルトの名無しさん
2015/11/22(日) 18:51:07.88ID:zgumCplVウィンドウ右上にある検索ボックスでの検索?
まあ何であれ自分で作ってみれば原因もわかるんじゃない
CUIで作るだけじゃ分からんかもしれんけど
0005デフォルトの名無しさん
2015/11/22(日) 18:54:04.16ID:dFORHBUS0006uy ◆Qawu9.2l1E
2015/11/22(日) 19:16:19.32ID:hFpqZnLD新規アカウント作るとその後数日間だけは速い
でも、どこかにキャッシュが蓄積されてんだろうね
少しずつエクスプローラーが重くなる
もう大容量ファイル以外はSSD推奨の流れ
0007デフォルトの名無しさん
2015/11/22(日) 19:20:17.51ID:ISFyIiRrあの検索はファイル名のみを検索してるわけじゃないから
0008デフォルトの名無しさん
2015/11/22(日) 19:29:21.11ID:vggKhYqJプログラムが完成したあたりでEverythingの存在を知って愕然とするが良い
コンマ何秒でリアルタイム検索が出来るWindows最強の検索ソフト
これ使ったこと有ったら自分でつくろうなどと言う発想は最早出てこない
>>3
Vista以降であればIExplorerBrowserってのが有るから
殆ど何も書かなくてもエクスプローラ風のファイラーが作れる
http://oldworldgarage.web.fc2.com/programing/tip0010-1_IExplorerBrowser.html
http://eternalwindows.jp/shell/explorerbrowser/explorerbrowser01.html
ツリービューがほしい場合はINameSpaceTreeControlを使うらしい
http://eternalwindows.jp/shell/explorerbrowser/explorerbrowser04.html
こちらに関しては使ったことがないので良く知らない
0009デフォルトの名無しさん
2015/11/22(日) 19:50:08.20ID:yPUHF/WVちょっと理解力の足りない子が暴れてたからね
0010デフォルトの名無しさん
2015/11/22(日) 19:53:44.91ID:yPUHF/WVむしろファイル名だけの検索に戻して欲しい
ファイルの中身を検索したい時はエディタとかでやるし
0011デフォルトの名無しさん
2015/11/22(日) 20:01:06.71ID:ISFyIiRr0012デフォルトの名無しさん
2015/11/22(日) 20:05:04.34ID:/loq94Oxそういうことにしたければそういうことにすればいいんじゃ…
VLAとは関係ないpush/pop最適化の話をやぶから棒に振っておきながら、
そんな最適化はループ状況でスタックオーバーフローを起こすと突っ込まれたとたん
話題を最初からTCCのVLAの実装の話であったかのように捻じ曲げた醜態はdatと皆の記憶に残ったであろう…
0013デフォルトの名無しさん
2015/11/22(日) 20:09:00.46ID:vggKhYqJ0014デフォルトの名無しさん
2015/11/22(日) 20:31:44.48ID:dHfinU55まだ言ってるのかよ…
マジ、お前の理解力が無さすぎ
0015デフォルトの名無しさん
2015/11/22(日) 20:41:53.91ID:/loq94OxID:dHfinU55が何と主張しようとも、>>12と次の3点が事実なわけだが…
・ループ状況におけるpush/pop最適化がうまく働くケースと、スタックオーバーフローを引き起こすケースについては漏れが述べた(特に否定されず
・VLAについて、ループ内でサイズが増える場合は都度新たな領域の確保が必要であることも漏れが述べた(特に否定されず
・gotoでいかに関数ないジャンプしようとも、VLAの開放は関数を抜ける際に問題なく行えることも漏れが述べた(特に否定されず
この上何を理解せよというのか
傷ついたID:dHfinU55の心?
>>13
(以下略
0016デフォルトの名無しさん
2015/11/22(日) 20:52:05.39ID:yPUHF/WV> VLAとは関係ないpush/pop最適化の話をやぶから棒に振っておきながら
VLA も push/pop もスタック操作であることも理解できないのかよ…
> そんな最適化はループ状況でスタックオーバーフローを起こすと突っ込まれたとたん
元々その話なんだが…
ひょっとしてスタックオーバーフローは自分が最初に指摘したとか思ってたりするのか w
> 醜態はdatと皆の記憶に残ったであろう…
確かにそうだな
誰の醜態とは言わないけどさ
0017デフォルトの名無しさん
2015/11/22(日) 20:54:00.98ID:dFORHBUS可変長配列がスタックオーバーフローの原因になり得るって、言われてみればわかる話だけど、そこに目がいかなかったからね
でも次からはその可能性も検討材料にできるので、傍観者だったけど俺は成長出来たな
0018デフォルトの名無しさん
2015/11/22(日) 21:09:49.71ID:yPUHF/WV> 可変長配列がスタックオーバーフローの原因になり得るって
いやいや、ブロックの終端で普通に解放すればいいだけ
個人的には TCC の実装がおかしいと思う
どこかのアホが約一名勘違いしてるみたいだけど w
0019デフォルトの名無しさん
2015/11/22(日) 21:12:54.40ID:/loq94Ox>VLA も push/pop もスタック操作であることも理解できないのかよ…
素人カヨ…
1. 藻前が出したpush/popはcallerが準備する(引数領域の)話
本来は領域を残すことは必須では無い
2. VLAはcalleeが中でやる話であって、対象となるスタックフレームの位置が違う
なおかつ、ループ状況かつサイズ増大する配列が複数のときは、領域を残すことが必須となる。
これらが一緒とか、TCCの話にすり替えた件といい、話の捻じ曲げはお得意のご様子で…
>> そんな最適化はループ状況でスタックオーバーフローを起こすと突っ込まれたとたん
>元々その話なんだが…
>ひょっとしてスタックオーバーフローは自分が最初に指摘したとか思ってたりするのか w
語るに落ちた?
本来のpush/pop最適化はスタックオーバーフローなんて起こしません
スタックオーバーフローを起こすぐらいなら、ループ内でSPをオフセットして帳尻を合わせるインストラクションを1発実行する方がまだマシだからだ
(>>15の箇条書きの一発目、または前スレ>>998の「ワカル」2発目
どっちがより深く理解して喋ってるのか衆目に明らかになったってカンジ?
0020デフォルトの名無しさん
2015/11/22(日) 21:23:33.30ID:vggKhYqJallocaしまくってスタックオーバーフローしましたってだけの話だろ
お前が一人で勝手にもつれさせているだけ
https://www.youtube.com/watch?v=BKorP55Aqvg
↑これの「赤い線なのに君が書いた線は青いせんじゃないか」
とかいってるやつがお前
0021デフォルトの名無しさん
2015/11/22(日) 21:32:00.55ID:/loq94Ox>>19の前半のは撤回
ループ内でサイズ増大するVLAが複数あっても、ループの終わり(そのVLAがスコープを抜けたとき)にSPリセットすれば済むわ;
それはそうとして、
>>20
んまーそんな感じやね
ただ「実体を残す事にはパフォーマンス上の理由がある。 」と言い出した
(SPリセットしないことを言い出した)のは前スレの>966であって漏れジャナーイ
0022デフォルトの名無しさん
2015/11/22(日) 21:35:19.68ID:zgumCplVでも今回は一人だけおかしい側だったから動画の状況とは違うな
0023デフォルトの名無しさん
2015/11/22(日) 21:50:13.11ID:zgumCplV3次元空間なら3本お互いに直角にできる
もっと多い次元の空間とか考える方向があるのならもしかして7本もできるのかも?(よくわからん)
背景色と当てる光の色をうまくすれば緑のインクで赤い線を書くこともできるような気がしなくもない
と思ったが緑のインクの時点で赤い光は吸収されるからどう頑張っても無理か
0024デフォルトの名無しさん
2015/11/22(日) 21:57:25.25ID:yPUHF/WV> なおかつ、ループ状況かつサイズ増大する配列が複数のときは、領域を残すことが必須となる。
はあ?
何のために領域を残すことが「必須」なのか説明してからほざきなよ w
ちなみにそんなアホな主張をしてるのは君だけだから
0025デフォルトの名無しさん
2015/11/22(日) 22:01:48.36ID:yPUHF/WV> ただ「実体を残す事にはパフォーマンス上の理由がある。 」と言い出した
> (SPリセットしないことを言い出した)のは前スレの>966であって漏れジャナーイ
そいつはパフォーマンス上「やることが」あるって書いてる
「必須」と勘違いしたのは君だけ
0026デフォルトの名無しさん
2015/11/22(日) 22:16:32.92ID:wAq+seW6#include <stdlib.h>
#include <string.h>
typedef unsigned char byte;
int main(void) {
for (size_t a = 4; a; --a) {
size_t size = sizeof(size_t);
byte b[size + a * 16];
fprintf(stderr, "%p %u\n", b, sizeof(b));
memcpy(b, &a, size);
printf("%u\n", *(size_t *)b);
}
return 0;
}
>>18も勘違いしてないか?
こんな風に"ちゃんと"可変長配列にするとgccでもアドレスずれるよ。
http://www.c-tipsref.com/words/stackframe.html の2番目の図を拝借させてもらうと、
ローカル変数領域が途中結果領域を超えてしまうから必然的にallocaし直すハメになる。
スタックに取らずにvectorみたいにヒープに取れば無問題なんだけど。
とにかく一時変数のスコープは短くってのとループ内のvlaは気をつけたほうがいい。
0027デフォルトの名無しさん
2015/11/22(日) 22:22:36.57ID:wAq+seW60028デフォルトの名無しさん
2015/11/22(日) 22:33:39.14ID:/loq94Ox>そいつはパフォーマンス上「やることが」あるって書いてる
漏れがスコープを抜けた変数の実体を残す必要は無い、と書いたのに対して
なんかスゲー剣幕で、実体を残す奴はバカいわんばかりに(実際には「アホウ」と書いてた;
「実体を残す事にはパフォーマンス上の理由がある。 」と書いてた気がするYO
ていうかやっぱあんまりVLAに関係ない発言だったのねん(そもそも>>966のときはまだbが通常の自動変数というスレの流れだったし、
0029デフォルトの名無しさん
2015/11/22(日) 22:58:13.24ID:vggKhYqJ~~~~~~~~~~~~~~~~~~~~~~~~
>なんかスゲー剣幕で、実体を残す奴はバカいわんばかりに
~~~~~~~~~~~~~~~~~~~~~
この時点で日本語としてのつながりがおかしいでしょ
他人の文章を読み取ったり表現したり論理的に考える能力が無いから
話がもつれるんだよ
0030デフォルトの名無しさん
2015/11/22(日) 23:06:28.73ID:vNSTGRzmhttps://github.com/kazz0117/LED-Displaay-Digital-Clock-Using-H8-3694F
始めてマイコンボードで作った作品です。
ソースレビューをお願いします。
29歳のアマチュアPGです。
0031デフォルトの名無しさん
2015/11/22(日) 23:34:21.20ID:/loq94Oxちょっそれtypoだから
>>28訂正
誤: 実体を残す奴はバカいわんばかりに
正: 実体を残さない奴はバカいわんばかりに
0032デフォルトの名無しさん
2015/11/22(日) 23:54:10.80ID:vNSTGRzmhttps://github.com/kazz0117/H8-3694F-Digital-Clock
これでプロとして通用する見込みがあるか判定もお願いします。
0033デフォルトの名無しさん
2015/11/23(月) 00:10:09.36ID:b98i53Mhこれぞ2chだって感じだなー
0034デフォルトの名無しさん
2015/11/23(月) 00:10:57.31ID:AALv4lAugotoでスコープ外れる時も解放しなきゃならんが、
GCCの拡張でラベルのアドレスをvoid *変数に入れた間接gotoだと、実行時までブロックの外に抜ける事が
決定しないので、解放できなくなる。
0035デフォルトの名無しさん
2015/11/23(月) 00:31:50.54ID:fxSBPtHVさっと見た感じ読みやすいコードだと思います。
気になった点としては、
1. せっかくtypedef unsigned char _UBYTEとかで型を隠してるのに使われてない
2. #define hoge 0とか1とかは可能な限りenumを使いたい
3. そのファイル内でしか使われない関数はstaticを付けてスコープを制限したい
4. 3の結果グローバルな関数のプロトタイプ宣言は.hに移す
5. main()とか若干長いのでもうちょっと短くしたい(冒頭の処理をhoge_init()にまとめるとか)
あまり細かく見てないけどこんな感じです。
0036デフォルトの名無しさん
2015/11/23(月) 00:33:56.81ID:fxSBPtHVアンダースコアで始まるシンボル名はコンパイラ側でリザーブされているので使わないように。
インクルードガードとかもね。どうしても付けたいなら末尾に。
0037デフォルトの名無しさん
2015/11/23(月) 00:50:28.55ID:m2YBTfVY>>36
見ていただいてありがとうございます。
ご指摘の改善点、のちほど適用させていただきます。
0038デフォルトの名無しさん
2015/11/23(月) 00:51:27.18ID:VAY4UJYXデュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。
例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
バトスピ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、ガンダム・ウォー、ライブオン、ディメンション・ゼロ、カードヒーローなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。
WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。
設計思想は 《 RPGツクール 》 が良いかな? 他に、優れたエディター有ったら挙げてみて。
個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。
↓
エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。
↓
遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
なるべく前述3つで可能な再現は全て実装させる方向を目指す。 まぁ努力する・・・
バトスピ、ヴァンガ、バディ、デュエマなど発売済みゲームソフトが存在してるケースはベンダーに研究させる。
↓
各社TCGを再現するテストプレイ ⇒ 更に改良や修正。
↓
機能制限した下位版を5万円以上で発売 + デュエリ−グ用に改造した上位版でサーバー稼動=営業開始。
↑
下位版の改造および商用利用には、別途で当社との契約が必要。
さ〜て、製作ベンダー見つけよっと!ww(クス
http://wc2014.2ch.net/test/read.cgi/entrance2/1447639727/-18
0039デフォルトの名無しさん
2015/11/23(月) 07:52:00.20ID:UOHAVa5Aグラムシュミットの正規直交化ってまさにそれじゃないの?
0040デフォルトの名無しさん
2015/11/23(月) 19:33:30.67ID:1C9r5blK何故でしょうか。
最初のうちは、問題なくビルドできていたのですがヘッダファイルを追加した際に
発生しています。
なので、ヘッダファイル関連の部分をコメントアウトしても同様のエラーになるます。
ビルドはPC上のNetBeansを使って、ラズベリーパイ上に転送してラズベリーパイ上でコンパイルしています。
ちなみにMAKEは良くわからないので、NetBeans任せです。
「main.c:(.text+0x1c): `softPwmWrite' に対する定義されていない参照です」
0041デフォルトの名無しさん
2015/11/23(月) 19:59:18.70ID:7jQqFmWDこれ、プロとして通用以前にまともに動かないだろ?
メインのループの中でLED表示もキー読み取りもしてないじゃんwww
0042デフォルトの名無しさん
2015/11/23(月) 20:19:49.24ID:4hTn3ZTz詳しく見たわけじゃないけど、タイマ割り込みを使ってLED表示とキー入力のルーチンを
呼び出しているように思える。
組み込み系のタスク管理処理だと一般的なやり方のような気がするけど。
0043デフォルトの名無しさん
2015/11/23(月) 20:27:30.18ID:+Ddm9172題材もちょっとねー
大学生でもこれぐらいは書くからねー
0044デフォルトの名無しさん
2015/11/23(月) 20:38:46.63ID:7jQqFmWDOK,OK.理解した。俺がちゃんと読んでなかったわ(恥
DispDigit()の中で自分自身をSetTimer()で登録しているから
周期的にDispDigit()が呼ばれるってわけね
わかりずれーww
0045デフォルトの名無しさん
2015/11/23(月) 20:46:54.29ID:fxSBPtHVエラーメッセージそのままだよ。定義(実装)の前に参照しようとしている。
関数ならプロトタイプ宣言を先にしておく、もしくは関数ブロック自体を使うより前に配置する。
ファイルの上から下へ流れることを思い出すべし。
0046デフォルトの名無しさん
2015/11/23(月) 20:58:25.33ID:1C9r5blKありがとうございます。
確認してみます。
0047デフォルトの名無しさん
2015/11/23(月) 23:28:30.23ID:1C9r5blK色々調べてみたら、wiringPiをgccのリンクオプションで指定しなければならなかったようです。
全然関係ない普通の関数でビルドエラーが出まくるので、原因特定に時間が掛かってしまった。。
0048デフォルトの名無しさん
2015/11/24(火) 10:58:57.10ID:tJqlgFatいいからhoge厨は二度と来るな。
0049デフォルトの名無しさん
2015/11/24(火) 11:42:48.48ID:d6tP0hfQどうかお願い致します
0050デフォルトの名無しさん
2015/11/24(火) 12:15:08.25ID:2IyJeQ15ってすれば出来るよ
0051デフォルトの名無しさん
2015/11/24(火) 12:46:17.07ID:WDNAFAErその聞き方だとCってよりアルゴリズムの話になる
どういう計算、判断をCで書きたいか書いてくれ
0052デフォルトの名無しさん
2015/11/24(火) 13:15:35.66ID:cksHvZaSまず1000円札と1円玉だけで練習
それができたら紙幣と硬貨の種類を増やしてやり直し
0053デフォルトの名無しさん
2015/11/24(火) 17:03:51.24ID:zj3pUKBAアルゴリズム(というほど大げさでもないか)の話題だが…。
C特有の整数の除算結果や剰余を得る演算子の質問かも知れぬ。
0054デフォルトの名無しさん
2015/11/24(火) 19:07:30.92ID:UGtu2+cgconst int coin[ATC]={1,5,10,50,100,500};
bool tsuri(int x, const int *stok, int *r) { // int stok[ATC], int r[ATC]
int i=ATC;
while (i--){ if (stok[i]>=(r[i]=x/coin[i])) x-=r[i]*coin[i]; else r[i]=0; }
return x==0; }
0055デフォルトの名無しさん
2015/11/24(火) 23:37:59.56ID:GksIIF6Pそれはさておき、定数6が余りにダサ過ぎる。
0056デフォルトの名無しさん
2015/11/24(火) 23:53:59.47ID:UGtu2+cg0057デフォルトの名無しさん
2015/11/25(水) 00:01:30.37ID:DK24seVo0058デフォルトの名無しさん
2015/11/25(水) 00:19:25.37ID:Sra0FKsRそのコード、例えば、おつりが400円でストックの100円玉が3枚のとき
100円玉はスキップされて一枚も使われないぞ
0059デフォルトの名無しさん
2015/11/25(水) 00:35:40.61ID:Zpo4a/J30060デフォルトの名無しさん
2015/11/25(水) 00:44:00.54ID:d8/Xbbzt0061デフォルトの名無しさん
2015/11/25(水) 01:19:42.11ID:Vd1+RMMI0062デフォルトの名無しさん
2015/11/25(水) 01:35:50.94ID:rAklTrAk0063デフォルトの名無しさん
2015/11/25(水) 01:40:29.76ID:wwtRzQvg求人情報113,957件の平均最低月給196,400円 ♬
あなたの住む街は第何位?平均最低月給はいくら??
http://jobinjapan.jp/area/
0064デフォルトの名無しさん
2015/11/25(水) 07:43:59.70ID:7xFqT66+横から失礼。
>>54 が何だか複雑な処理をしてるなぁと思ったが、
おつり用の小銭ストックの残数を調べてたのか。
すると客が金を投入して商品を選択した時点で
(商品を出す前に)おつりを払い出せるか確認しないといかんな。
「おつりが出せません。あと3本買ってください」とか
表示される自動販売機ができちゃうな。
0065デフォルトの名無しさん
2015/11/25(水) 07:48:49.66ID:vDBW4/m60066デフォルトの名無しさん
2015/11/25(水) 14:58:04.94ID:IJD2vpFF0067デフォルトの名無しさん
2015/11/26(木) 07:14:29.70ID:KF/aoe7N正しいスレはわからないためここで質問します
ふさわしいところがあれば誘導お願いします
「Cプログラマのためのアルゴリズムとデータ構造」という本を読んでいるのですが
237ページからのヒープソートのセクションで
ヒープ=半順序木を配列に実装にしたもの
というようなことが書かれていますがgoogleする限り
ヒープ=半順序木
という意味でつかわれていることが多いようです
実際のところヒープの定義はなんですか?
0068デフォルトの名無しさん
2015/11/26(木) 07:52:24.60ID:cMOPjOrthttps://ja.wikipedia.org/wiki/%E3%83%92%E3%83%BC%E3%83%97%E9%A0%98%E5%9F%9F
0069デフォルトの名無しさん
2015/11/26(木) 08:19:55.65ID:egDOh8oEこのスレには文法バカの言語オタクしかいません
というか真面目な質問を今の2ちゃんねるでする方が間違っています
まだ、某知恵袋とかで質問した方がまともな回答がもらえるでしょう
0070デフォルトの名無しさん
2015/11/26(木) 09:19:41.42ID:8/48+RLP半順序木とヒープは別物
ヒープはその本にある通り、半順序木を配列に実装したもの
Cには半順序木というデータ構造がないので、Cで半順序木を実装するにはヒープとして実装する必要がある
0071デフォルトの名無しさん
2015/11/26(木) 15:01:07.41ID:3WTjKhoCありがとうございます
しかしwikpediaには「ヒープの実装」のセクションにて
古典的な二分木データ構造を使って、二分ヒープ木を構築することは完全に可能である。
中略
しかし、より普及しているやり方は、配列に写す方法である。
以下のように、ほとんど完全な二分木の要素に番号を付けてみる。
まず、根元の要素に 1 という番号を付ける。
以下幅優先で順番に番号を振ってゆく(図を参照)。
https://ja.wikipedia.org/wiki/%E4%BA%8C%E5%88%86%E3%83%92%E3%83%BC%E3%83%97
しかし実際現場または一般では(私は学生です)
あなたや本の言う通り「ヒープ」と同義ということになっているのであれば
Wikipediaが間違っているのでしょうか?
それともヒープの実装が現実的には配列しか選択肢がないために
実質的に「配列の実装」とうことになっており学術的な定義では半順序木と等価なのでしょうか?
(はたまた私の(Wikipediaについて)日本語の解釈が間違っているのでしょうか?)
0072デフォルトの名無しさん
2015/11/26(木) 15:03:02.52ID:3WTjKhoCなんとか意味わかります?
0073デフォルトの名無しさん
2015/11/26(木) 17:49:14.82ID:bZdq0+/9配列上だとキャッシュに乗りやすくて速いだろうし
0074デフォルトの名無しさん
2015/11/26(木) 19:31:11.82ID:AipKzKjF正直何を聞きたいのかよくわからない。
ヒープソートで半順序木を使っている。
半順序木は配列で実装できる。
半順序木は配列と等価なのですか?
って言ってるんだよね。
実装するものとされるものだから、明らかに等価じゃない。
「配列以外の実装ってありますか?」とか
「配列で実装するとこういう問題があると思うんですけど・・」とか
聞きたいことを明確にすべき
0075デフォルトの名無しさん
2015/11/26(木) 19:41:04.28ID:KF/aoe7Nすみません
最終的に知りたいこと(聞きたい事)はヒープの定義です。
それにあたって本とWikipediaの説明の記述の食い違いについても説明がほしいのです
本の記述ではヒープとは半順序木の配列を使った実装だとあります。
しかしWikpediaによればその定義は半順序木と等価であるような説明(実際に半順序木とは書かれていないが)です。
0076デフォルトの名無しさん
2015/11/26(木) 19:58:00.51ID:ofQuFmMzWikipediaなら出典も書いてあるはずだからあたってみたら?
0077デフォルトの名無しさん
2015/11/26(木) 20:19:11.22ID:QqGRNt0Rセジウィックのアルゴリズム本でも読め
Wikipediaに書いてある事が怪しいと思うんなら自分で編集しなおせよ
ロックされてない項目なら
編集合戦になるかもしれないけどな
0078デフォルトの名無しさん
2015/11/26(木) 20:24:40.74ID:QqGRNt0Rhttps://ja.wikipedia.org/wiki/%E3%83%92%E3%83%BC%E3%83%97
ここを読んでるんだけど、
>ヒープ(英: heap)とは、「子要素は親要素より常に大きいか等しい(または常に小さいか等しい)」という制約を持つ木構造の事。
という定義になってる
https://ja.wikipedia.org/wiki/%E3%83%92%E3%83%BC%E3%83%97%E3%82%BD%E3%83%BC%E3%83%88
上のリンクにもここにも「半順序木」という言葉は見つからない
だから木構造でいいだろ
たまたま配列表現も可能でそちらの方が実現も楽だし速度も速いし、現在のCPUのアーキテクチャに
とっては都合がいいってだけの話
なんならヒープを二分木で書いてそれでヒープソートを書いてそれを講師に見せて「こういう事ですか」
とでも聞いてみりゃいいじゃん
00792
2015/11/26(木) 20:25:03.78ID:IxMwzK+NWindowsのエクスプローラーがファイル名だけ検索してないってどういうことですか?
ファイル名で検索してるのにそれ以外の事って検索しようがなくないですか?
例えばファイルの中身を調べても何の意味もないかと…
実際何してるんでしょう?
0080デフォルトの名無しさん
2015/11/26(木) 20:30:46.59ID:KF/aoe7Nヒープは半順序木の配列をつかった実装ということで決着です!
決まりです!ありがとうございます!
0081デフォルトの名無しさん
2015/11/26(木) 20:31:10.47ID:ofQuFmMzC言語スレだぞここは
ファイル名だけで検索してるって具体的にどういう方法で検索してるのかも書かずによく言い切れるな
00822
2015/11/26(木) 20:37:34.42ID:IxMwzK+NWinndowsの仕組みが分からないんですよね
あのエクスプローラの検索機能って何を目的としてるんでしょうか?
0083デフォルトの名無しさん
2015/11/26(木) 20:43:21.67ID:xvh9rNnd重症患者
0084デフォルトの名無しさん
2015/11/26(木) 20:49:25.70ID:ofQuFmMzファイル名だけで検索させているのかどうかも分かりませんってことか
お前の使い方が悪い
0085デフォルトの名無しさん
2015/11/26(木) 21:30:45.65ID:uW3Onm83一義的な定義は木構造だと思うけど、
配列を用いた実装が有名なので、
その実装方法や、特定の実装自体のことをヒープと呼ぶこともある。
wikipediaをwikiと呼ぶようなもんだ。
0086デフォルトの名無しさん
2015/11/26(木) 21:36:01.67ID:KF/aoe7Nすごい安心する
回答ありがとうございます!
0087デフォルトの名無しさん
2015/11/26(木) 21:37:40.68ID:R9Nnr2R1嘘こけ
木構造はtreeって呼ぶし二分木もbinary tree
お前が言ってるのはtreeとheapが同じってことだぞ、わかってんのか
0088デフォルトの名無しさん
2015/11/26(木) 21:41:03.68ID:KF/aoe7N0089デフォルトの名無しさん
2015/11/26(木) 21:54:42.91ID:uW3Onm83> ヒープ(英: heap)とは、「子要素は親要素より常に大きいか等しい(または常に小さいか等しい)」という制約を持つ木構造の事。
が正しい。ただし、実装方法や特定の実装のことをヒープと呼ぶこともある。
「ヒープ」と言って実際に何を指しているかは、文脈から判断するしかない。
0090デフォルトの名無しさん
2015/11/26(木) 21:59:33.46ID:KF/aoe7Nとは半順序木と同じことではないのですか???
0091デフォルトの名無しさん
2015/11/26(木) 22:11:00.55ID:uW3Onm83同じ
0092デフォルトの名無しさん
2015/11/26(木) 22:18:50.31ID:KF/aoe7N半順序木==ヒープってことですよね?
んで文脈によってヒープは半順序木の配列による実装を指すことがあるということですね?
0093デフォルトの名無しさん
2015/11/26(木) 22:20:50.93ID:gSiocztQ0094デフォルトの名無しさん
2015/11/26(木) 22:29:31.14ID:uW3Onm83その理解でいいと思う
ただ、「ヒープ==半順序木」が本当に第一義かというと異論あるかも。
おそらく世界で最初にプログラムとして実装された半順序木は
配列を使ったものなので、明確に区別されていなかった可能性はある。
広義と狭義だと考えといた方がいいかもしれない
0095デフォルトの名無しさん
2015/11/26(木) 22:33:27.35ID:R9Nnr2R1自分で第一義をコロコロ変えるなよw
0096デフォルトの名無しさん
2015/11/26(木) 22:35:47.83ID:R9Nnr2R1最初は配列とか知ったか振り恥ずかしいぞ
0097デフォルトの名無しさん
2015/11/26(木) 22:41:24.58ID:KF/aoe7Nありがとうございます
いまのところこれが一番他の文章と矛盾せず納得できるものです
コロコロ回って申し訳なく思いますが現状はこの形で頭に入れます
ほかの方も意見をありがとうございます
またひっくり返りそうな文章がみつかればここへ凸するつもりです!
そのときはまたよろしくお願いします!
ではおやすみなさい!
0098デフォルトの名無しさん
2015/11/27(金) 07:43:46.38ID:OSV5eH1L名称に含まれる要素全てが実装に含まれるとは考えてはいけない。
0099デフォルトの名無しさん
2015/11/27(金) 22:17:07.99ID:p4Ja58Mtあれってまさかファイル内のテキストまで検索してるんですか?
余計な事しなくていいのに…
0100デフォルトの名無しさん
2015/11/27(金) 22:39:28.89ID:TNfNeR16そのまさか
副次ストリームなんかも含めて読む
逆にアホな実装すると副次ストリームのデータ考慮しないでいろいろやらかす
0101デフォルトの名無しさん
2015/11/27(金) 23:21:25.77ID:FVkBDZy0■ このスレッドは過去ログ倉庫に格納されています