stooage排序

对于这个排序的算法。我真的解释不清楚,看着伪代码将代码敲出来了。并且能很好的实现排序过程,仔细想想自己好像明白是怎么回事,但是不知道怎么来表达出来,我还是先把我写的代码贴出来,争取大家一起理解理解,我也在看看这个代码。。争取过段时间有个满意的答复。。

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;

}

点赞