PowerPoint プレゼンテーション

データ構造とプログラミング
第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