一方、教育現場におけるUNIXオペレーティング・システムの普及は近年とくに めざましく、そのようなところではUNIXとの整合性と実用性の観点からC言語を プログラミングの導入教育に採用するところが多い。しかし、C言語を初めて 学んだばかりの読者にとって、Pascalで記述された本書のアルゴリズムを正確に 理解するのは難しいかもしれない。(C言語に習熟したあとであれば、想像力を 働かして本書のPascal記述のアルゴリズムを理解するのは容易であろうと思われ るが。) そこで、そのような読者のために本書のアルゴリズムをすべてC言語で記述しなお したのがこの付録である。ご活用いただければ幸いである。
この付録を使用するにあたっての注意を以下に述べておく。
1章, 5章,
2章, 6章,
3章, 7章,
4章, 8章
1){
h=n/2;
msort(p,h);
msort(p+h,n-h);
merge(p,n);
}
}
main()
{
msort(1,n);
}
____________________________________________________________
図 4・6 マージソート
____________________________________________________________
void partition(int p,int q,int *jp,int *ip)
{
int i,j,s;
i=p; j=q; s=a[p];
while (i<=j){
while (a[i]s) --j;
if (i<=j){
swap(&a[i],&a[j]);
++i;j--;
}
}
*jp=j; *ip=i;
}
void qsort(int p,int q)
{
int i,j;
if (pa[k+1])
k++;
if (a[i]>a[k]){
swap(&a[i],&a[k]);
heapify(k,j);
}
}
}
void makeheap()
{
int i;
for (i=n;1<=i;i--)
heapify(i,n);
}
main()
{
int i;
makeheap();
for (i=n;2<=i;i--){
swap(&a[1],&a[i]);
heapify(1,i-1);
}
}
_______________________________________________________
図 4・12 ヒープソート(改良版)