1 / 15

データ構造とアルゴリズム論 第2章 配列(構造)を使った処理

データ構造とアルゴリズム論 第2章 配列(構造)を使った処理. 平成 17 年 10 月 18 日 森田 彦. 配列(構造)とは?(復習). A[1] , A[2] ,・・・,のように、カッコ内の数字(添え字)で変数の値を指定できるデータ構造 例 1,5,3,9,7 を配列変数に保存. 大きさが「 5 」の配列変数 A を 1 個 用意。. A. [1]. [2]. [3]. [4]. [5]. ※ 一般の変数の場合. 5 個 の変数を用意する。. 1. 5. 3. 9. 7. A1. A2. A3. A4. A5.

rance
Download Presentation

データ構造とアルゴリズム論 第2章 配列(構造)を使った処理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. データ構造とアルゴリズム論第2章 配列(構造)を使った処理データ構造とアルゴリズム論第2章 配列(構造)を使った処理 平成17年10月18日 森田 彦

  2. 配列(構造)とは?(復習) • A[1],A[2],・・・,のように、カッコ内の数字(添え字)で変数の値を指定できるデータ構造 例1,5,3,9,7を配列変数に保存 大きさが「5」の配列変数Aを1個用意。 A [1] [2] [3] [4] [5] ※一般の変数の場合 5個の変数を用意する。 1 5 3 9 7 A1 A2 A3 A4 A5

  3. 本章(本日)の学習のねらい • 配列を使った(典型的な)処理を学習する。 • 処理内容(アルゴリズム)に応じて配列を利用できるようになる。 注意:配列を理解できなければ、次回以降の講義内容を理解できません。

  4. 2-1 配列の利点 • 例5個の数値を順に表示させる。 <5個の変数> <1個の配列変数> 開始 開始 A1を表示 i←1 A2を表示 No i≦5 i≦100 A3を表示 Yes A[i] を表示 A4を表示 終了 i←i+1 A5を表示 繰り返し処理の場合 → 配列を利用すると便利! 終了

  5. 配列(利用)の利点 • 拡張が容易。上の例の場合、データ数が100になっても「5→100」に変えるだけで良い。 • 処理内容をコンパクトに記述できるので、見通しが良くなる。→アルゴリズムの構造がはっきりとする。

  6. 2-2Java言語による配列の宣言 • p.14~15を熟読して下さい。 • ここは前期テキスト「4-12 配列」(p.92~94)で学習した内容です。

  7. 2-3 配列の応用-最大・最小 • 4つの正の整数が変数A1~A4に入っている。この中の最大値を求める。 例:1,5,3,8の場合 2.A2とMAXの比較 3.A3とMAXの比較 終了!MAXに最大値が入っている。 1.A1とMAXの比較 4.A4とMAXの比較 1 1 1 5 5 5 3 3 3 8 8 8 8 0 1 0 5 A1 A2 A3 A4 MAX 勝ち抜き戦方式

  8. 流れ図で表すと・・・ 開始 No A3>MAX MAX←0 Yes No A1>MAX MAX←A3 Yes MAX←A1 No A4>MAX Yes No A2>MAX MAX←A4 Yes MAX←A2 MAX の表示 終了

  9. ループ i:1,1,4 ループ プログラムの作成 プリントp.17 【基礎課題2-1】 開始 MAX←0 配列A[i](i=1~4)を用いて表すと・・・ •  拡張が容易:整数の数が増えてもループの終値を変更するだけで良い。 • 記述がコンパクトに:繰り返し処理をループ内に一つだけ記述するだけで済む。 No Yes MAX←A[i] 理解度チェック→【基礎課題2-2 】、【基礎課題2-3 】、【基礎課題2-4】 MAX の表示 終了

  10. 2-4 配列要素の挿入・削除 • 例:配列A[1]~A[N]にデータa1~aNが入っている。→配列要素のm番目にデータXを挿入する。 A[1] A[2] A[m] A[m+1] A[N] X am以降を右にずらす a1 a2 ・・・ am am+1 ・・・ aN A[1] A[2] A[m] A[m+1] A[m+2] A[N+1] 挿入完了! a1 a2 ・・・ X am am+1 ・・・ aN A[1] A[2] A[m] A[m+1] A[m+2] A[N+1]

  11. ループ i:N,-1,m ループ 流れ図で表すと・・・ a1 a2 ・・・ am am+1 ・・・ aN A[1] A[2] A[m] A[m+1] A[N] 開始 X a1 a2 ・・・ am am+1 ・・・ aN mの入力 A[1] A[2] A[m] A[m+1] A[m+2] A[N+1] A[N]→A[N+1] 右にずらす。 A[N-1]→A[N] A[i+1] ←A[i] ・・・ A[m]→A[m+1] A[m]→A[m+1]から始めると、どうなるか? A[m] ←X 終了 【基礎課題2-5】(p.24)

  12. 1 5 3 2 9 7 A[1] A[2] A[3] A[4] A[5] A[6] 1 1 1 1 1 5 5 5 5 5 3 3 3 3 3 9 2 9 9 9 9 9 7 9 7 A[1] A[1] A[1] A[1] A[1] A[2] A[2] A[2] A[2] A[2] A[3] A[3] A[3] A[3] A[3] A[4] A[4] A[4] A[4] A[4] A[5] A[5] A[5] A[5] A[5] 9 9 A[6] A[6] A[6] A[6] 【基礎課題2-5】具体例で考えると・・・ A[4]に2を挿入する。 スタート A[4]→A[5] A[5]→A[6] A[4]に2を代入

  13. ループ i:1,1,N ループ 2-5 添え字の参照 開始 Gusu←0 • 例:配列Data[1]~Data[N]にデータ(整数)が入っている。この中で、偶数および奇数の個数を数える。 Kisu←0 Kosu[1]:偶数の個数Kosu[2]:奇数の個数 を導入すると・・・ Y ←Data[i] % 2 No Y=0 Yes Gusu←Gusu+1 Kisu←Kisu+1 終了

  14. ループ 初期化ループ i:1,1,2 i:1,1,N ループ 初期化ループ 開始 Kosu[ ]内には、何が入る? Y=0: Kosu[1]←Kosu[1]+1 Kosu[i]←0 Y=1: Kosu[2]←Kosu[2]+1 となることに注目すると・・・ 選択構造が不要になった! Y ←Data[i] % 2 Kosu[Y+1]←Kosu[Y+1]+1 Kosu[ ]←Kosu[ ]+1 データ構造の変更→アルゴリズムの変更! p.28~p.29を熟読して【基礎課題2-7】へ 終了

  15. テストのアナウンス • 11/15に第1回目のテストを実施します。 • 要領は前期と同じペーパーテスト形式です。 • 試験欠席の場合は、単位を取得できません。→十分注意してください。 • 詳細は、追ってアナウンスします。 • 成績=2回のテストの平均点+応用課題数

More Related