|
クイックソートのソート後めでの途中の動きもすべて出力させたいのですがどこにprintf文を書けばよいのかが分からず困っています。
#include<stdio.h>
#define N 8 /* 配列のサイズ*/
void QuickSort(int array[], int head, int tail);
void DispArray();
int data[N] = {22, 27, 7, 21, 47, 6, 10, 33};
main()
{
printf("ソートする前の要素値の並び");
DispArray();
QuickSort(data, 0, N - 1);
printf("ソートした後の要素値の並び");
DispArray();
}
/* クイクックソートで昇順に並べ替える */
void QuickSort(int array[], int head, int tail)
{
int x, i,j,step;
if(tail -head >= 1)
{
x = array[head]; /* 基準値 */
i = head;
j = tail;
step = 1;
/* 基準値と大小比較でグループ分け */
while (i < j)
{
if(step == 1)
{
if(array[j] < x)
{
array[i++] = array[j];
step = 2;
}
else
j--;
}
else
{
if (array[i] >= x)
{
array[j--] = array[i];
step = 1;
}
else
i++;
}
}
array[j] = x;
QuickSort(array, head, j-1); /* 基準値未満のグループをソート */
QuickSort(array, j+1, tail); /* 基準値以上のグループをソート */
}
}
void DispArray()
{
int i;
for(i = 0; i < N; i++)
printf("%2d ", data[i]);
printf("\n");
}
|