新・明解Javaで学ぶアルゴリズムとデータ構造

Similar documents
明解Javaによるアルゴリズムとデータ構造

明解Javaによるアルゴリズムとデータ構造

新・明解Javaで学ぶアルゴリズムとデータ構造

3 Java 3.1 Hello World! Hello World public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World");

Javaによるアルゴリズムとデータ構造

8 if switch for while do while 2

Microsoft Word - NonGenTree.doc

Microsoft Word - NonGenList.doc

解きながら学ぶJava入門編

K227 Java 2

情報処理Ⅰ

明解Java入門編

Microsoft Word - keisankigairon.ch doc

ALG2012-A.ppt

2

Q Q Q Questions [ 3 ] FUMIYA KATSURAGI 02

Assignment_.java 課題 : 転置行列 / class Assignment_ public static void main(string[] args) int i,j; int[][] array = 1,,,,,,,,,,,,,1,1,; 行 列行列 i

untitled

新・明解C言語で学ぶアルゴリズムとデータ構造

(search: ) [1] ( ) 2 (linear search) (sequential search) 1

r1.dvi

デジタル表現論・第4回

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

プログラミングA

Week 1 理解度確認クイズ解答 解説 問題 1 (4 2 点 =8 点 ) 以下の各問いに答えよ 問題 bit 版の Windows8.1 に Java をインストールする時 必要なパッケージはどれか 但し Java のコンパイルができる環境をインストールするものとする 1. jdk

2

Java (7) Lesson = (1) 1 m 3 /s m 2 5 m 2 4 m 2 1 m 3 m 1 m 0.5 m 3 /ms 0.3 m 3 /ms 0.6 m 3 /ms 1 1 3

スライド 1

10/8 Finder,, 1 1. Finder MAC OS X 2. ( ) MAC OS X Java ( ) 3. MAC OS X Java ( ) / 10

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

C言語によるアルゴリズムとデータ構造

問題 01 水道料金を節約しよう 問題のポイント問題文で述べられた仕様を理解し その通りに動作するプログラムを記述できるかを問う問題です 変数 入出力 四則演算に加え 条件分岐や繰り返し処理についての知識が必要です 問題の解き方いくつかのアルゴリズムが考えられますが w が 100 以下と小さい値な

<4D F736F F D2091E F196E291E889F090E C4816A82CC838C E646F6378>

Prog1_15th

新・明解Java入門

r02.dvi

ohp02.dvi

新版明解C言語 実践編

Java講座

新・明解C言語 実践編

本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(Java) サンプル問題 知識科目 第 1 問 (

untitled

3,, となって欲しいのだが 実際の出力結果を確認すると両方の配列とも 10, 2, 3,, となってしまっている この結果は代入後の配列 a と b は同じものになっていることを示している つまり 代入演算子 = によるの代入は全要素のコピーではなく 先をコピーする ため 代入後の a と b は

やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF

アルゴリズムとデータ構造1

ALG ppt

新・明解Java入門

: : : TSTank 2

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

問題1 以下に示すプログラムは、次の処理をするプログラムである

I java A

PowerPoint Presentation

untitled

Java (5) 1 Lesson 3: x 2 +4x +5 f(x) =x 2 +4x +5 x f(10) x Java , 3.0,..., 10.0, 1.0, 2.0,... flow rate (m**3/s) "flow

プログラミング入門1

問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java

oop1


デジタル表現論・第6回

プログラミング入門1

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

ALG2012-F.ppt

JavaプログラミングⅠ

P03.ppt

人工知能入門


ALG2012-C.ppt

文字列操作と正規表現

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

Java演習(4) -- 変数と型 --

解きながら学ぶC++入門編

Thread

(Basic Theory of Information Processing) 1

Java updated

Prog1_6th

目 次 オブジェクト指向 1 3 オブジェクト指向 2 9 二分探索 14 二次元配列 16 ソート 18 ArrayList 25 解答 27 2

Prog1_3rd

アルゴリズムとデータ構造1

r3.dvi

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

¥×¥í¥°¥é¥ß¥ó¥°±é½¬I Exercise on Programming I [1zh] ` `%%%`#`&12_`__~~~ alse

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

Writing Explain Tracing2 Sequence Data Tracing1 Modification2 Modification1 Basics 1 Fig. 1 Hierarchy of skill related to programming(hypothesis) Modi

226

Java Java Java Java Java 4 p * *** ***** *** * Unix p a,b,c,d 100,200,250,500 a*b = a*b+c = a*b+c*d = (a+b)*(c+d) = 225

% 15.8% 14.8% 15.0% 16.0% 16.5% 0.5% 16.1% 15.2% 16.9% 15.7% 17.1% 18.6% 0.4% 21.4% 15.8% 14.8

main

Java 3 p.2 3 Java : boolean Graphics draw3drect fill3drect C int C OK while (1) int boolean switch case C Calendar java.util.calendar A

Prog1_11th

2.2 Java C main Java main 2 C 6 C Java 3 C Java ( ) G101Hello.java G101Hello main G101Hello.java /* G101Hello */ class G101Hello { /* main */ public s

JavaプログラミングⅠ

1.ppt

新版 明解C++入門編

Quick Sort 計算機アルゴリズム特論 :2017 年度 只木進一

Microsoft PowerPoint ppt


Transcription:

第 3 章 探索 Arrays.binarySearch

743 3-1 探索 探索 searching key 配列 探索 Fig.3-1 b c

75 a 6 4 3 2 1 9 8 2 b 64 23 53 65 75 21 3-1 53 c 5 2 1 4 3 7 4 Fig.3-1 a

763 3-2 線形探索 線形探索 linear search sequential search 2 Fig.3-2 2 a b c d Fig.3-2 a 6 b 4 c 3 d 2

77 5 Fig.3-3 aʰ 5 a 3-2 b c d e f ɡ ʰ Fig.3-3 n n / 2 n + 1 n List 3-1

783 List 3-1 Chap03/SeqSearch.java // import java.util.scanner; class SeqSearch { //--- ankey ---// static int seqsearch(int[] a, int n, int key) { int i = 0; while (true) { if (i == n) return -1; // -1 ㆒ if (a[i] == key) return i; // ㆓ i++; 実行例 7 Ÿ public static void main(string[] args) { x[0]22 Ÿ Scanner stdin = new Scanner(System.in); x[1]8 Ÿ x[2]55 Ÿ System.out.print(""); x[3]32 Ÿ int num = stdin.nextint(); x[4]120 Ÿ int[] x = new int[num]; // num x[5]55 Ÿ x[6]70 Ÿ for (int i = 0; i < num; i++) { 55 Ÿ System.out.print("x[" + i + "]"); x[2] x[i] = stdin.nextint(); System.out.print(""); // int ky = stdin.nextint(); int idx = seqsearch(x, num, ky); // xky if (idx == -1) System.out.println(""); else System.out.println("x[" + idx + "]"); seqsearch a n key key key -1-1 55 x[2] x[5] 2 i 0 while

79while ㆒ i == n ㆓ a[i] == key while true 2 3 while for List 3-2 3-2 List 3-2 //--- ankey ---// static int seqsearch(int[] a, int n, int key) { for (int i = 0; i < n; i++) if (a[i] == key) return i; // return -1; // -1 Chap03/SeqSearchFor.java main List 3-1 main p. Column 3-1 無限 実現 List 3-1 while break return for true while (true) { // for ( ; ; ) { // do { // while (true); while for 1 do

803 番兵法 sentinel methodfig.3-2 Fig.3-3 Fig.3-4 a 2 2 b 5 5 Fig.3-4 4 4 4 4 4 4 a[0] a[6] a[7] sentinel a2 a[7] 2 b5 a[7] 5 4 4 4 4 4 4 b a[7] List 3-1 List 3-3 1 7 8 seqsearchsen

81//--- ankey---// static int seqsearchsen(int[] a, int n, int key) { int i = 0; a[n] = key; while (true) { if (a[i] == key) break; i++; return i == n? -1 : i; // // public static void main(string[] args) { Scanner stdin = new Scanner(System.in); ㆒ ㆓ 叅 実行例 7 Ÿ x[0]22 Ÿ x[1]8 Ÿ x[2]55 Ÿ x[3]32 Ÿ x[4]120 Ÿ x[5]55 Ÿ x[6]70 Ÿ 120 Ÿ x[4] 3-2 List 3-3 // Chap03/SeqSearchSen.java import java.util.scanner; class SeqSearchSen { System.out.print(""); int num = stdin.nextint(); int[] x = new int[num + 1]; // num + 1 for (int i = 0; i < num; i++) { System.out.print("x[" + i + "]"); x[i] = stdin.nextint(); System.out.print(""); int ky = stdin.nextint(); int idx = seqsearchsen(x, num, ky); // // xky if (idx == -1) System.out.println(""); else System.out.println("x[" + idx + "]"); key a[n] List 3-1 while if if (i == n) // if (a[i] == key) // if 4 4 4 4 4 4 while 4 4 i n -1

823 3-3 2 分探索 2 分探索 binary search 6 39 a[5]31 5 7 15 28 29 31 39 58 68 7 95 39 a[6] a[10] a[8] 68 5 7 15 28 29 31 39 58 68 7 95 a[6] a[7] 39 58 39 6 7 (6 + 7) / 2 6 5 7 15 28 29 31 39 58 68 7 95 39 n a key plprpc pl 0pr n - 1pc (n - 1) / 2 Fig.3-5 a

83a b pl pr 5 7 15 28 29 31 39 58 68 7 95 pl pr 5 7 15 28 29 31 39 58 68 7 95 3-3 pl pc pr c pl pr 5 7 15 28 29 31 39 58 68 7 95 Fig.3-5 39 ca[pc] key a[pc] < key a[pl] a[pc] key a[pc] a[pc + 1] a[pr] pl pc + 1 ab a[pc] > key a[pc] a[pr] key a[pc] a[pl] a[pc - 1] pr pc - 1 bc a[pc] key 6 Fig.3-6

843 a pl pr 5 7 15 28 29 31 39 58 68 7 95 b pl pr 5 7 15 28 29 31 39 58 68 7 95 c pl pr 5 7 15 28 29 31 39 58 68 7 95 d e pl pr 5 7 15 28 29 31 39 58 68 7 95 pr pl 5 7 15 28 29 31 39 58 68 7 95 Fig.3-66 a a[0] a[10] a[5] 31 key 6 a[5] a[0] a[4] b a[2] 15 key 6 a[2] a[0] a[1] c a[0] 5 key 6 pl pc + 1 1 pl pr 1 d a[1] 7 key 6 pr pc - 1 0 pl pr List 3-4 n (n + 1) n - 1

85//--- ankey ---// static int binsearch(int[] a, int n, int key) { int pl = 0; // int pr = n - 1; // do { int pc = (pl + pr) / 2; // if (a[pc] == key) return pc; // else if (a[pc] < key) pl = pc + 1; // else pr = pc - 1; // while (pl <= pr); return -1; // public static void main(string[] args) { Scanner stdin = new Scanner(System.in); System.out.print(""); int num = stdin.nextint(); int[] x = new int[num]; // num System.out.println(""); 実行例 7 Ÿ x[0]15 Ÿ x[1]27 Ÿ x[2]39 Ÿ x[3]77 Ÿ x[4]92 Ÿ x[5]108 Ÿ x[6]121 Ÿ 39 Ÿ x[2] 3-3 List 3-4 // Chap03/BinSearch.java import java.util.scanner; class BinSearch { System.out.print("x[0]"); x[0] = stdin.nextint(); // for (int i = 1; i < num; i++) { do { System.out.print("x[" + i + "]"); x[i] = stdin.nextint(); while (x[i] < x[i - 1]); // System.out.print(""); int ky = stdin.nextint(); // int idx = binsearch(x, num, ky); // xky if (idx == -1) System.out.println(""); else System.out.println("x[" + idx + "]"); xx ceilingx 3.5 4

863 計算量 complexity time complexity space complexity 線形探索 時間計算量 ㆒ static int seqsearch(int[] a, int n, int key) { int i = 0; ㆓ 叅 ㆕ ⓹ ⓺ while (i < n) { if (a[i] == key) return i; i++; return -1; // // List 3-1 seqsearch ㆒⓺ Table 3-1 i 0 ㆒ ㆕⓺ ㆓ 叅

87Table 3-1 ㆒ ㆓ 叅 ㆕ ⓹ ⓺ 3-3 max(a, b) a b 3-1 List 3-3p.81 seqsearchsen while for 3-2 '*' 0 1 2 3 4 5 6 ---+------------------------------ * 0 6 4 3 2 1 9 8 * 1 6 4 3 2 1 9 8 * 2 6 4 3 2 1 9 8 3x[2]

883 2 分探索 時間計算量 Table 3-2 //--- ---// static int binsearch(int[] a, int n, int key) { ㆒ ㆓ int pl = 0; int pr = n - 1; // // 叅 ㆕ ⓹ ⓺ 柒 ⓼ ⓽ ⓾ do { int pc = (pl + pr) / 2; // if (a[pc] == key) return pc; // else if (a[pc] < key) pl = pc + 1; // else pr = pc - 1; // while (pl <= pr); return -1; // Table 3-2 ㆒ ㆓ 叅 ㆕ ⓹ ⓺ 柒 ⓼ ⓽ ⓾ Fig.3-7

89Fig.3-7 3-3 n a key idx static int searchidx(int[] a, int n, int key, int[] idx) 8 a {1, 9, 2, 9, 4, 6, 7, 9 key 9 idx {1, 3, 7 3 3-3 3-4 "<-" "->" "+" 0 1 2 3 4 5 6 ---+------------------------------ <- + -> 3 1 2 3 5 6 8 9 <- + -> 1 1 2 3 5 6 8 9 2x[1] 3-5 7 5 a b a 1 3 5 7 7 7 7 8 8 9 9 b 1 2 4 6 7 8 9 1 3 5 7 7 7 7 8 8 9 9 static int binsearchx(int[] a, int n, int key)