#include?<stdio.h>
#include?<stdlib.h>
int?numbers[],size;
void?C_sort(int?L,int?R){
????int?L_arrow,R_arrow,box;
????if(L>R){
????????return;
????}
????box=numbers[L];
????L_arrow=L;R_arrow=R;
????while(L_arrow!=R_arrow){
????????while(numbers[R_arrow]>=box){
????????????if(L_arrow<R_arrow){
????????????????R_arrow--;
????????????}?else?{
????????????????break;
????????????}
????????}
????????while(numbers[L_arrow]<=box){
????????????if(L_arrow<R_arrow){
????????????????L_arrow++;
????????????}?else?{
????????????????break;
????????????}
????????}
????????if(L_arrow<R_arrow){
????????????numbers[L_arrow]=numbers[L_arrow]+numbers[R_arrow];
????????????numbers[R_arrow]=numbers[L_arrow]-numbers[R_arrow];
????????????numbers[L_arrow]=numbers[L_arrow]-numbers[R_arrow];
????????}
????}
????numbers[L]=numbers[L_arrow];
????numbers[L_arrow]=box;
????C_sort(L,L_arrow-1);
????C_sort(L_arrow+1,R);
}
int?main()
{
????int?i;
????scanf("%d",&size);
????for(i=1;i<=size;i++)scanf("%d",&numbers[i]);
????for(i=1;i<=size;i++)printf("%d",numbers[i]);//測(cè)試代碼,此時(shí)輸出已不正常
????C_sort(1,size);
????for(i=1;i<=size;i++)printf("%d",numbers[i]);
????system("pause");
????return?0;
}就這個(gè),編譯倒沒問題,運(yùn)行的時(shí)候,錯(cuò)誤非常隨機(jī),比如98765甚至要輸入兩次還是錯(cuò)的??!為什么?
快速排序結(jié)果錯(cuò)誤?
bigmathbase
2017-08-12 11:14:14