希尔排序:我建议你先百度一下“希尔排序”,百度百科中,希尔排序说的很详细
第一趟排序你先将4的倍数的数据都先取来进行直接插入排序
Q, H, C, Y, P, A, M, S, R, D, F, X
Q P R ---这组直接插入排序: P Q R
H A D ---这组直接插入排序: A D H
C M F ---这组直接插入排序: C F M
Y S X---这组直接插入排序: S X Y
所以第一趟结果PACSQDFXRHMY
快速排序,我建议也百度一下,上面有图有过程例子,提供一段C语言程序供参考。你可以调试跟踪一下。
#include
void out(char a[], int n)
{
int i;
for(i=0;i{
printf("%c ",a[i]);
}
}
void quicksort(char a[], int low, int high)
{
if (low >= high) return;
int first = low;
int last = high;
int key = a[first];
while (first{
while (first=key) --last;
a[first] = a[last];
while (firsta[last] = a[first];
}
a[first] = key;
out(a,12);
printf("\n");
quicksort(a, low, first - 1);
quicksort(a, first + 1, high);
}
void main()
{
char a[12]={'Q','H', 'C', 'Y', 'P', 'A', 'M', 'S', 'R', 'D', 'F', 'X'};
quicksort(a,0,11);
printf("结果:\n");
out(a,12);
scanf("%d",&a[1]);
}
输出结果
F H C D P A M Q R S Y X
A D C F P H M Q R S Y X
A D C F P H M Q R S Y X
A C D F P H M Q R S Y X
A C D F M H P Q R S Y X
A C D F H M P Q R S Y X
A C D F H M P Q R S Y X
A C D F H M P Q R S Y X
A C D F H M P Q R S X Y
结果:
A C D F H M P Q R S X Y
Q, H, C, Y, P, A, M, S, R, D,F, X
Q, H, C, Y, P, A, M, S, R, D,F, X
F, Q, H, C, Y, P, A, M, S, R, D,X
D,F, Q, H, C, Y, P, A, M, S, R, X
D,F, Q, H, C, Y, P, A, M, S, R, X
D,F, Q, H, C, Y, P, A, M, S, R, X
M, D,F, Q, H, C, Y, P, A, S, R, X
A, M, D,F, Q, H, C, Y, P, S, R, X
P, A, M, D,F, Q, H, C, Y, S, R, X
P, A, M, D,F, Q, H, C, Y, S, R, X
C, P, A, M, D,F, Q, H, Y, S, R, X
H, C, P, A, M, D,F, Q, Y, S, R, X