对于这个排序的算法。我真的解释不清楚,看着伪代码将代码敲出来了。并且能很好的实现排序过程,仔细想想自己好像明白是怎么回事,但是不知道怎么来表达出来,我还是先把我写的代码贴出来,争取大家一起理解理解,我也在看看这个代码。。争取过段时间有个满意的答复。。
C语言:
Codee#12907
#include <stdio.h >
#include<stdlib.h>
void
stooge_sort(
int
*
a
,
int
i
,
int
j)
{
int
temp;
int
k;
if(
a
[
i
]
<
a
[
j
])
{
temp
=
a
[
i
];
a
[
i
]
=
a
[
j
];
a
[
j
]
=
temp;
}
if(
i
+
1
>=
j)
//结束的条件
return;
else
{
k
=(
j
–
i
+
1)
/
3;
//划分3部分
stooge_sort(
a
,
i
,
j
–
k);
stooge_sort(
a
,
i
+
k
,
j);
stooge_sort(
a
,
i
,
j
–
k);
}
}
int
main()
{
int
a
[
100
];
int n;
int
i;
while(
scanf(
“%d”
,
&n))
{
for(
i
=
1;
i
<=n;
i
++)
{
scanf(
“%d”
,
&
a
[
i
]);
}
stooge_sort(
a
,
1
,n);
for(
i
=
1;
i
<=n;
i
++)
{
printf(
“%d “
,
a
[
i
]);
}
}
return
0;
}