データ構造とプログラミング 第4回補足資料 文責 武田 林太郎 CreW Creative Workspace プログラムの理解 流れ図は,複雑なプログラムのソースコードを理 解するのに役立つ 流れ図は,制御構造(逐次,繰り返し,条件分岐) を組み合わせる事によって,処理の流れを表す CreW Creative Workspace for文を流れ図で表す public void bubbleSort() { int out, in; for(out=nElems-1; out>1; out--) for(in=0; in<out; in++) if( a[in] > a[in+1] ) swap(in, in+1); } out = nElems-1 false out > 1 true for文の中の処理 out- - CreW Creative Workspace バブルソート out = nElems-1 out > 1 public void bubbleSort() { int out, in; for(out=nElems-1; out>1; out--) for(in=0; in<out; in++) if( a[in] > a[in+1] ) swap(in, in+1); } true in = 0 in > out false false true a[in] >a[in+1] false true swap( in, in+1 ) in++ out- - CreW Creative Workspace 選択ソート public void selectionSort() { int out, in, min; for(out=0; out<nElems-1; out++) { min = out; for(in=out+1; in<nElems; in++) if(a[in] < a[min] ) min = in; swap(out, min); } } 2番目のfor文 in = out + 1 in < nElems false true a[in] <a[min] false min = in in++ CreW Creative Workspace 選択ソート public void selectionSort() { int out, in, min; for(out=0; out<nElems-1; out++) { min = out; for(in=out+1; in<nElems; in++) if(a[in] < a[min] ) min = in; swap(out, min); } } out = 0 out < nElems - 1 false true min = out 2番目のfor文 swap( out, min ) out++ CreW Creative Workspace 挿入ソート public void insertionSort() { int in, out; for(out=1; out<nElems; out++) { double temp = a[out]; in = out; while(in>0 && a[in-1] >= temp) { a[in] = a[in-1]; --in; } a[in] = temp; } } while文の部分 in > 0 true a[in-1] >= temp false true a[in] = a[in-1] --in CreW Creative Workspace 挿入ソート public void insertionSort() { int in, out; for(out=1; out<nElems; out++) { double temp = a[out]; in = out; while(in>0 && a[in-1] >= temp) { a[in] = a[in-1]; --in; } a[in] = temp; } } out = 1 out < nElems true false temp = a[out] int = out while文 a[in] = temp out++ CreW Creative Workspace
© Copyright 2024 ExpyDoc