代码效果
递归代码内容
void OrderTurnNumber(int* arr, int overflow, int sz)
{
if (overflow < sz - 1)
{
if (*arr > *(arr + 1))
{
int tmp = *arr;
*arr = *(arr + 1);
*(arr + 1) = tmp;
if (overflow > 0)
{
OrderTurnNumber(arr - 1, overflow - 1,sz);
}
}
OrderTurnNumber(arr + 1, overflow + 1,sz);
}
}int main()
{
int arr[] = { 5,7,7,6,5,4,7,6,1,1,2,3,54654,213213,21221,0,14,1,3,4,7,12,1,2,5,52,165,46,4,654,55,3564};
int sz = sizeof(arr) / sizeof(arr[0]);
OrderTurnNumber(arr,0,sz);
for (int i = 0; i < sz; i++)
printf("%d ", arr[i]);
return 0;
}
我也去问了别人,我建议是用正常的算法去做这个东西....