快速排序中遇到的小错误
void qsort(int a
[], int lo
, int hi
)
{
int x
= a
[lo
+ ((hi
- lo
)>>1)];
int i
= lo
;
int j
= hi
;
int temp
;
do
{
while (a
[i
]<x
) i
++;
while (a
[j
]>x
) j
--;
if(i
<= j
)
{
temp
= a
[i
];
a
[i
] = a
[j
];
a
[j
] = temp
;
i
++;j
--;
}
}while(i
<=j
);
if (i
< hi
) qsort(a
,i
,hi
);
if (j
> lo
) qsort(a
,lo
,j
);
}
代码运行不通过
void qsort(int a
[], int lo
, int hi
)
{
int i
= lo
;
int j
= hi
;
int x
= a
[i
+ ((j
- i
)>>1)];
int temp
;
do
{
while (a
[i
]<x
) i
++;
while (a
[j
]>x
) j
--;
if(i
<= j
)
{
temp
= a
[i
];
a
[i
] = a
[j
];
a
[j
] = temp
;
i
++;j
--;
}
}while(i
<=j
);
if (i
< hi
) qsort(a
,i
,hi
);
if (j
> lo
) qsort(a
,lo
,j
);
}
代码运行通过
由于在函数体中hi和lo属于该函数体的外部变量,在递归运算时产生错误;
转载请注明原文地址: https://lol.8miu.com/read-8673.html