O(N) ( ) log 2 N

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

program.dvi

Microsoft Word - 第5回 基本データ構造2(連結リスト).doc

/ SCHEDULE /06/07(Tue) / Basic of Programming /06/09(Thu) / Fundamental structures /06/14(Tue) / Memory Management /06/1

r07.dvi

ohp07.dvi

1 1.1 C 2 1 double a[ ][ ]; 1 3x x3 ( ) malloc() 2 double *a[ ]; double 1 malloc() dou

LIFO(last in first out, ) 1 FIFO(first in first out, ) 2 2 PUSH POP : 1

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

I. Backus-Naur BNF : N N 0 N N N N N N 0, 1 BNF N N 0 11 (parse tree) 11 (1) (2) (3) (4) II. 0(0 101)* (

‚æ4›ñ

Taro-リストⅢ(公開版).jtd

I. Backus-Naur BNF S + S S * S S x S +, *, x BNF S (parse tree) : * x + x x S * S x + S S S x x (1) * x x * x (2) * + x x x (3) + x * x + x x (4) * *

1 1.1 C 2 1 double a[ ][ ]; 1 3x x3 ( ) malloc() malloc 2 #include <stdio.h> #include

r03.dvi

( ) ( ) 30 ( ) 27 [1] p LIFO(last in first out, ) (push) (pup) 1

ohp03.dvi

r08.dvi

void hash1_init(int *array) int i; for (i = 0; i < HASHSIZE; i++) array[i] = EMPTY; /* i EMPTY */ void hash1_insert(int *array, int n) if (n < 0 n >=

プログラミングI第10回

PowerPoint プレゼンテーション

ohp08.dvi

PowerPoint プレゼンテーション

I J

[ 1] 1 Hello World!! 1 #include <s t d i o. h> 2 3 int main ( ) { 4 5 p r i n t f ( H e l l o World!! \ n ) ; 6 7 return 0 ; 8 } 1:

新・明解C言語 ポインタ完全攻略

:30 12:00 I. I VI II. III. IV. a d V. VI

untitled

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

untitled

:30 12:00 I. I VI II. III. IV. a d V. VI

Taro-リストⅠ(公開版).jtd

3.1 stdio.h iostream List.2 using namespace std C printf ( ) %d %f %s %d C++ cout cout List.2 Hello World! cout << float a = 1.2f; int b = 3; cout <<

Microsoft Word - Cプログラミング演習(12)

II 3 yacc (2) 2005 : Yacc 0 ~nakai/ipp2 1 C main main 1 NULL NULL for 2 (a) Yacc 2 (b) 2 3 y

第3回 配列とリスト

A/B (2010/10/08) Ver kurino/2010/soft/soft.html A/B

C のコード例 (Z80 と同機能 ) int main(void) { int i,sum=0; for (i=1; i<=10; i++) sum=sum + i; printf ("sum=%d n",sum); 2

C 2 / 21 1 y = x 1.1 lagrange.c 1 / Laglange / 2 #include <stdio.h> 3 #include <math.h> 4 int main() 5 { 6 float x[10], y[10]; 7 float xx, pn, p; 8 in

Microsoft Word - Cプログラミング演習(10)

Microsoft PowerPoint - H22プログラミング第一(E)#12

lexex.dvi

/* do-while */ #include <stdio.h> #include <math.h> int main(void) double val1, val2, arith_mean, geo_mean; printf( \n ); do printf( ); scanf( %lf, &v

PowerPoint Template

untitled

DA13

Original : Hello World! (0x0xbfab85e0) Copy : Hello World! (0x0x804a050) fgets mstrcpy malloc mstrcpy (main ) mstrcpy malloc free fgets stream 1 ( \n

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =

Minimum C Minimum C Minimum C BNF T okenseq W hite Any D

第2回

Microsoft Word - no206.docx

橡Pro PDF

r11.dvi

ohp11.dvi

Prog1_15th

bitvisor-ipc v12b.key

BW BW

Microsoft Word - Cプログラミング演習(11)

木構造の実装

II ( ) prog8-1.c s1542h017%./prog8-1 1 => 35 Hiroshi 2 => 23 Koji 3 => 67 Satoshi 4 => 87 Junko 5 => 64 Ichiro 6 => 89 Mari 7 => 73 D

Taro-ポインタ変数Ⅰ(公開版).j

1. 入力した正の整数を降順に並べ換えて出力するプログラムを作成せよ プログラムは個別にコンパイルし make コマンドで実行すること 入力データは 50 以下とし 以下の数が混在しているとする 16 進数 : 先頭 1 文字が x または X( エックスの小文字か大文字 ) 8 進数 : 先頭 1

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

memo

tuat1.dvi

I117 プログラミング演習II

cpp1.dvi

double float

pptx

main

memo

2 T 1 N n T n α = T 1 nt n (1) α = 1 100% OpenMP MPI OpenMP OpenMP MPI (Message Passing Interface) MPI MPICH OpenMPI 1 OpenMP MPI MPI (trivial p

第2回

DA100データアクイジションユニット通信インタフェースユーザーズマニュアル

memo

1.3 ( ) ( ) C

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

Microsoft Word - Cプログラミング演習(8)

Taro-最大値探索法の開発(公開版

Microsoft PowerPoint - 6.pptx

memo

kiso2-06.key

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

M M M M

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

6-1

Taro-再帰関数Ⅱ(公開版).jtd

Taro-プログラミングの基礎Ⅱ(公

Cプログラミング - 第8回 構造体と再帰

Microsoft PowerPoint - 11.pptx

Microsoft Word - 13

目 目 用方 用 用 方

文字数は1~6なので 同じ本数の枝を持つパスで生成される呪文の長さは最大で6 倍の差がある 例えば 上図のようなケースを考える 1サイクル終了した時点では スター節点のところに最強呪文として aaaaaac が求まる しかしながら サイクルを繰り返していくと やがてスター節点のところに aaaaaa

slide5.pptx

Taro-2分探索木Ⅰ(公開版).jtd

£Ã¥×¥í¥°¥é¥ß¥ó¥°(2018) - Âè11²ó – ½ÉÂꣲ¤Î²òÀ⡤±é½¬£² –

double 2 std::cin, std::cout 1.2 C fopen() fclose() C++ std::fstream 1-3 #include <fstream> std::fstream fout; int a = 123; fout.open( "data.t

tuat2.dvi

[1] #include<stdio.h> main() { printf("hello, world."); return 0; } (G1) int long int float ± ±

Transcription:

2005 11 21 1 1.1 2 O(N) () log 2 N 1.2 2 1

List 3-1 List 3-3 List 3-4? 3 3.1 3.1.1 List 2-1(p.70) 1 1 10 1 3.1.2 List 3-1(p.70-71) 1 1 2 1 2 2

1: 1 3

3.1.3 1 List 3-1(p.70-71) 2 #include <stdlib.h> stdlib.h () main EXIT SUCCESS EXIT SUCCESS stdlib.h #define EXIT_SUCCESS 0 1 32 return 0; 4 #define NMAX 10 NMAX 10 16 if(buf) buf /if C 0 0 25 sum=n=0 (=) n=0 n 0 n=0 0 0 sum 1 #include <s t d i o. h> 2 #include <s t d l i b. h> 3 4 #define NMAX 10 5 6 int main ( void ) 7 { 1: 4

8 int buf, sum, count, n ; 9 int array [NMAX] ; 10 11 count =0; 12 do 13 { 14 p r i n t f ( 0 : ) ; 15 s c a n f ( %d,& buf ) ; 16 i f ( buf ) 17 { 18 array [ count ]= buf ; 19 ++count ; 20 } 21 } while ( buf! = 0 ) ; 22 23 / / 24 p r i n t f ( \n ) ; 25 for ( sum=n=0;n<count;++n ) 26 { 27 p r i n t f ( %d \ t, array [ n ] ) ; 28 sum+=array [ n ] ; 29 } 30 p r i n t f ( \n \ n %d \n,sum ) ; 31 32 return EXIT SUCCESS ; 33 } 3.2 3.2.1 3.2.2 List 3-2(p.72) 2 2 5

2: 1 6

3.2.3 2 List 3-2(p.72) 12 array=(int *)malloc(sizeof(int)*count); 1. sizeof(int) sizeof() int 4 2. 4 count 3. malloc() Memory ALLOCate( ) ( ) 4. (int *) malloc +1 4 5. ( ) array 7 int *array 21 array[n] array[n] *(array+n) array[n] array n ( ) 35 free(array); free() 12 malloc 2: 1 #include <s t d i o. h> 2 #include <s t d l i b. h> 3 4 int main ( void ) 5 { 6 int buf, sum, count, n, i ; 7 int array ; 8 9 / / 10 p r i n t f ( ) ; 11 s c a n f ( %d,& count ) ; 12 array=(int ) malloc ( s i z e o f ( int ) count ) ; 13 14 n=0; 15 do 7

16 { 17 p r i n t f ( 0 : ) ; 18 s c a n f ( %d,& buf ) ; 19 i f ( buf ) 20 { 21 array [ n]= buf ; 22 ++n ; 23 } 24 } while ( buf! = 0 ) ; 25 26 / / 27 p r i n t f ( \n ) ; 28 for (sum=i =0; i <n;++ i ) 29 { 30 p r i n t f ( %d\ t, array [ i ] ) ; 31 sum += array [ i ] ; 32 } 33 p r i n t f ( \n \ n %d \ n,sum ) ; 34 35 f r e e ( array ) ; 36 return EXIT SUCCESS ; 37 } 3.3 3.3.1 3.3.2 List 3-3(p.74) 3 3 8

9

3: 10

3.3.3 3 List 3-3(p.74) 3 #include <memory.h> 30 memcpy() 30 memcpy(temp, array, sizeof(int)*size) memcpy() MEMory CoPY () array 4*size temp 3: 1 #include <s t d i o. h> 2 #include <s t d l i b. h> 3 #include <memory. h> 4 5 int main ( void ) 6 { 7 int buf, sum, count, n, s i z e ; 8 int array, temp ; 9 10 / 10 / 11 s i z e =10; 12 array=(int ) malloc ( s i z e o f ( int ) s i z e ) ; 13 14 count =0; 15 do 16 { 17 p r i n t f ( 0 : ) ; 18 s c a n f ( %d,& buf ) ; 19 i f ( buf ) 20 { 21 array [ count ]= buf ; 22 ++count ; 23 / / 24 i f ( count==s i z e ) 25 { 26 / 27 28 r e a l l o c ( ) / 29 temp=(int ) malloc ( s i z e o f ( int ) s i z e 2 ) ; 30 memcpy( temp, array, s i z e o f ( int ) s i z e ) ; 31 f r e e ( array ) ; 32 array=temp ; 33 s i z e =2; 34 } 35 } 36 } while ( buf! = 0 ) ; 37 38 / / 39 p r i n t f ( \n ) ; 40 for ( sum=n=0;n<count;++n ) 41 { 42 p r i n t f ( %d\ t, array [ n ] ) ; 11

43 sum+=array [ n ] ; 44 } 45 p r i n t f ( \n \ n %d \n,sum ) ; 46 47 f r e e ( array ) ; 48 return EXIT SUCCESS ; 49 } 4 4.1. 4.2 4.2.1 4.2.2 List 2-1(p.37) 1 1 12

4: 4 13

4.2.3 4 List 3-4(p.75-77) 5 typedef TYPE DEFine() struct taglistnode ListNode 15 17 lastnode=null lastnode 27 newnode->data=buf; newnode (->) newnode data buf (.) 4: 1 #include <s t d i o. h> 2 #include <s t d l i b. h> 3 4 / / 5 typedef struct taglistnode 6 { 7 struct taglistnode prev ; / / 8 struct taglistnode next ; / / 9 int data ; / / 10 } ListNode ; 11 12 int main ( void ) 13 { 14 int buf, sum ; 15 ListNode f i r s t n o d e, l a s t n o d e, newnode, thisnode, removenode ; 16 17 f i r s t n o d e=l a s t n o d e=null; 18 19 do 20 { 21 p r i n t f ( 0 : ) ; 22 s c a n f ( %d,& buf ) ; 23 i f ( buf ) / / 24 { 25 / / 26 newnode=(listnode ) malloc ( s i z e o f ( ListNode ) ) ; 27 newnode >data=buf ; 28 newnode >next=null; 29 30 i f ( l a s t n o d e!=null) 31 { 32 / 14

33 / 34 l a s t n o d e >next=newnode ; 35 newnode >prev=l a s t n o d e ; 36 l a s t n o d e=newnode ; 37 } 38 else 39 { 40 / / 41 f i r s t n o d e=l a s t n o d e=newnode ; 42 newnode >prev=null; 43 } 44 } 45 } while ( buf!= 0 ) ; 46 47 / / 48 p r i n t f ( \n ) ; 49 sum=0; 50 for ( t h i s n o d e=f i r s t n o d e ; t h i s n o d e!=null; 51 t h i s n o d e=thisnode >next ) 52 { 53 p r i n t f ( %d\ t, thisnode >data ) ; 54 sum+=thisnode >data ; 55 } 56 p r i n t f ( \n \ n %d \n,sum ) ; 57 58 / / 59 for ( t h i s n o d e=f i r s t n o d e ; t h i s n o d e!=null; ) 60 { 61 removenode=t h i s n o d e ; 62 t h i s n o d e=thisnode >next ; 63 f r e e ( removenode ) ; 64 } 65 66 return EXIT SUCCESS ; 67 } 4.3 1: O(1) O(N) / (O(N)) (O(1)) 5 [ 1] 15

30 p.75 List 3-3( 4) 16