約 7,945 件
https://w.atwiki.jp/genshiken/pages/30.html
080325 いつも更新が火曜ですみません。開き直って日付を火曜にしました。 バイトが金曜から月曜まであるから… データ構造の特徴を知る データ構造の特徴を勉強してください。 配列 連結リスト ハッシュテーブル それぞれどういった用途で用いられるかを調べて提出してください。 どういった処理に強いか、どういった処理に弱いか等もあるといいです。 解説 解説長いです。重要なことなので頑張って読んでね。 データ構造には得意な処理と苦手な処理というものがあります。 例えば配列に要素を挿入する場合を考えてみましょう。 もし配列の任意の位置に値を挿入したい場合、コードは下のようになります。 int *array; /* ある程度のメモリを確保した配列(を指す[[ポインタ]]) */ int length; /* 配列の長さ */ int n; /* 入れたい位置 */ for (int i = length - 1; i = n ; i--){ array[i+1] = array[i]; } array[n] = value; 要素の入れ替えが何度も発生します。コピーにコストのかかる値が配列に入っていた場合、これは問題になります。そうでなくとも配列の長さが大きければ、当然問題になります。 一方、連結リストの場合は挿入位置の一つ前の要素がさしているポインタをいじるだけですみます。 List *head; /* リストの先頭要素を指すポインタ */ List *list = head; List *elem; /* リストの要素のポインタ */ elem = (List*)malloc(sizeof(List)); int n; /* 入れたい位置 */ for (int i = 0; i n - 1; i--){ list = list- next; } elem- next = list- next; list- next = elem; ちなみにこのコードは色々嘘で、例えば先頭に挿入できません。困りましたね!知りません! ハッシュテーブルには順番というものが存在しないので比較はできません。 このように、データ構造に対する操作にはある程度のコストがかかるわけですが、どの程度のコストがかかるのかを表す記法が存在します。それがO-記法です。 例えばN個の要素を持つ配列からある値を探す処理は、値を一つずつ見ていく必要があるため、大体N回の操作が必要になります。 これをO-記法で表すと「O(N)」となります。アルゴリズムの計算量がO(N)とあった場合、そのアルゴリズムは要素数に比例する計算量を持つという意味になります。(あんまり正確な言い方じゃないですがわかりやすさを優先します) 一方、N個の要素を持つ「ソート済み」の配列からある値を探す場合、二分探査と呼ばれるアルゴリズムが使えます。これは任意の位置(大抵真ん中)より大きいか小さいかを調べ、分かった範囲でまた同じ操作を繰り返し要素を探索するアルゴリズムです。 詳細は省きますが、この場合大体logN回の操作が必要になります。(何故そうなるのか自分で考えてみましょう。ちなみにlogの底は2です。) これをO-記法で表すと「O(logN)」になります。大体分かってもらえたでしょうか。 そんなわけでこの記法を用いて各データ構造に対する操作にかかるコストを並べてみました。 配列 要素を追加 O(N) 要素のアクセス O(1) 要素の探索 O(N) リスト 要素を追加 O(1) 要素のアクセス O(N) 要素の探索 O(N) ハッシュテーブル 要素を追加 O(1) 要素のアクセス O(1) 並べてみたけどあんまり何も分かりませんね! データ構造の特性を理解して、目的にあったデータ構造とアルゴリズムを選びましょう、という話でした。
https://w.atwiki.jp/javadsge/pages/8690.html
(1)基本 (2)配列 (3)行列 (4)行列 (5)行列 (6)乱数 (7)最大値 (8)平均 (9)統計 (10)グラフ (11)グラフ (12)グラフ (13)グラフ (14)グラフ (15)グラフ (16)配列 (17)配列 (18)グラフ (19)配列 (20)平均 (21)最大値 (22)方程式 (23)最小二乗法 (24)逆行列 (25)乱数 (26)乱数 (27)乱数 (28)ファイル (29)ファイル出力 (30)行列 imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 -
https://w.atwiki.jp/algomemo/pages/2.html
メニュー トップページ 配列解析系 配列アラインメント 配列解析 カーネル方 遺伝統計学系 統計学系 次世代系 ツールアルゴリズム ツールオプション タンパク立体構造 まとめ 数学記号メモ 妄想力 メモ メニュー ここを編集 87ab
https://w.atwiki.jp/suffix/pages/1113.html
ループ for文はfor 回数 = 1 to 20 と nextではさむ。while文はwhile 条件 wendで挟む。 条件分岐 ifは1行、ifbは複数行の分岐を書ける。ifb elseif else endifのような組み合わせでの表記。 配列 Dim 変数[3]のように宣言する グローバル変数 publicをつける 関数 戻り値が無い場合はPROCEDURE~FEND。ある場合はFUNCTION~FEND。・メインルーチンは関数の後に書く必要がある。・配列を返す方法はこちらのサイト参照。slice(配列変数,0,length(配列変数)-1)とするようだ。 パッケージにまとめる module~endmoduleで一括りに出来る。参考➡http //d.hatena.ne.jp/junjun777/20121005
https://w.atwiki.jp/programmerassistant/pages/33.html
◆練習 ファイル名:ArgCalc.java コマンドライン引数に整数値、演算子を指定しその計算をおこうプログラムを作成せよ。 [実行結果] c \java java ArgsCalc 5 + 4 5+4=9 ■二次元配列の宣言とインスタンスの作成 書き方:型名[][] 変数名 = new 型名[行要素数][列要素数]; ↑行・列の順 (例)int [][] data = new int [2][3]; 行→ ↓列 [0]列目 [1]列目 [2]列目 [0]行目 [0] [0] [0] [1] [0] [2] [1]行目 [1] [0] [1] [1] [1] [2] 多次元配列 ↓ 配列の配列
https://w.atwiki.jp/officewiki/pages/59.html
https://w.atwiki.jp/limixp/pages/15.html
JDKのバージョンで違う仕様についてVectorクラスを例に挙げて紹介します. Vectorクラス Vectorクラス API J2SE 5.0 Vectorはオブジェクトの可変長配列を実装します.固定長の通常の配列と違い, 配列の長さが決まっていないためオブジェクトの追加・削除が容易となるメリットがあります.またVectorにはオブジェクト(Java.lang.Objectを継承しているもの全て)であれば何でも配列を作成することができます.一見,このどんなオブジェクトでも配列が作れるのは便利そうに聞こえるかもしれませんが,大きな問題もあります. 例えば, String型とInteger型のオブジェクトがVectorに混在することが可能になります.Vectorからオブジェクトを取り出すときは, 取り出したいオブジェクトの型にキャストして取り出さなくてはなりません.このとき,取り出したオブジェクトがStringなのかIntegerなのか判断することはできません.本来Integer型のオブジェクトなのに,String型にキャストしてしまうという可能性があるということです.気をつけてプログラミングをすれば避けられる問題ですが,このように違うオブジェクトがVectorに入っていても特にエラーにはならないため,誤って違うオブジェクトをVectorに追加ということも十分に有り得ることです. そもそも取り出すときにいちいちキャストしなければならないというのはプログラマにとって面倒くさいものです.さらに,違うオブジェクト同士をVectorのような配列として扱って何かしたいという要求はほとんどなく,もしあったとしても違うオブジェクトを同じ配列で扱うのは設計的に見ても悪いので見直す必要があるように思います. そこでJDK 1.5のバージョンからGenericsが導入されました.APIで E という表記がGenericsのことです.これは,Vector String と書くことで,そのVectorはStringのVectorであることを明記しています.これによって,Vectorへの要素の追加の際にString以外のオブジェクトが追加されたらコンパイラがエラーを検出してくれます.またVectorから要素を取り出す際にはいちいちキャストをしなくてもStringオブジェクトを取り出すことができるようになります. このようにVectorはJDK1.5からGenerics対応になったため,1.4とは若干仕様が異なっています. 例 public class VectorTest { public static トップページ
https://w.atwiki.jp/amaeda/pages/59.html
FFTWマニュアル - FFTWリファレンス - ベーシックインターフェース - 実データ離散フーリエ変換配列様式 実データ離散フーリエ変換配列様式 実データの離散フーリエ変換出力(r2c変換)は、対称性を持つ。つまり、原則的には、2倍の冗長性を持つ(4.7節What FFTW Really Computes参照)。(逆c2r変換の入力も、同様)。実際のところ、これらの冗長性の排除を、効果的かつ理解しやすい形式(多次元変換の一般化するもの)で行うことを、完全に実現することは不可能である。その代わりに、r2c変換の出力は、対応する複素変換の出力の半分をわづかに超える。データはいかなる方法でも”圧縮”せず、通常のfftw_complex値の配列として、格納している。実際のところ、このデータは対応する複素変換の配列の一部分である。 具体的にいえば、d(=ランク)次元の n1 x n2 x n3 x ... x nd の実変換では、複素データは、fftw_complex値で、n1 x n2 x n3 x ... x (nd/2 + 1)の行メジャー形式の配列である(割り算の余りは切り捨て)。つまり、我々は通常の複素変換で得られるデータの最後の次元の、小さいほうの半分(非負周波数)、に加えて1要素しか保存していません。(他の次元を半分にすることも可能でしたが、実装が最も簡単だったため、最後の次元を半分にしました)。 入出力が異なる、アウトオブレイス変換では、実データは単なる配列で、物理次元 n1 x n2 x n3 x ... x nd(列メジャー形式)となっています。 入出力が同じである、インプレイス変換では、いくつか複雑な問題が生じます。というのも、複素データは、実データより僅かに大きいためです。このケースでは、実データの最後の次元は、必ず余白がとられている必要があり、そこには追加の余分な値が格納されます。--最後の次元が偶数であれば、2つの追加、奇数であれば1つの追加データです。 つまり、実データの最後の次元は、物理的に 2(nd + 1)個のdouble値である必要があります(複素データを格納するのに過不足ないサイズ)。しかしながら、この物理的配列サイズは、論理的な配列サイズは変更しません。ndの値だけが、実際に最後の次元に格納され、ndがプランナーに渡される最後の次元となります。
https://w.atwiki.jp/marisan/pages/17.html
適度にがんばります。 てかこれ作った手前がんばらねば。 進捗状況 4/29:とりあえず演習問題をやり直してみましたよ。演習01〜15まで完了、しかし力つきました。寝ます。 4/30:さぼ…久しぶりに大学の仲間と飲んで、なんか落ち着いた日でした。 しかし帰宅してニュース見てびっくり。 5/1演習16〜17完了(演習16:for文のなかで、iの範囲を「i = args.length」にしていてずーっと悩んでいました。反省。) 子ネコが今月中にも我が家にやってくることになり、るんるんですよー。 二つの数値を交換する、三つの数値から最小値を選ぶ。どちらともコマンドラインから数を持って来るようにしました。 5/2絶対値を表示する:コマンドラインから数を入力することにしたんですが、argsをint型に変換するのを最初にやったら実行時エラー。なんとなく理由は感覚でわかるものの…ん?って感じ。 変数の値によって正負・0を表示:とくに問題なし。 階乗を求める:nを定数にする理由って??? 偶数のみ出力する:これもNを定数にする理由って??? 配列の要素の和を求める、配列の要素の最大値を求める:とくに問題なし。 配列を反転させる:まだ途中…泣。拡張forループが課題。 配列を定数Rだけ右に循環させる:なんとか…。定数R=1の場合ならOK。 配列から定数Sを探し、その添字を出力する:変数pをただの宣言じゃなくて、int p = 0;で宣言したら動いた。なんでだ? 昇順の配列からSを探し,その添字を出力する:途中で力尽きました…。
https://w.atwiki.jp/tetdm/pages/13.html
データ型 printf if文 比較演算子 whilefor ビット演算 シフト演算 マスク処理 ポインタ 配列のアドレス 配列とポインタ 文字列 2次元配列 構造体 過去問 前期中間解答2