#10200: 請問為什麼這樣會RE?


kujeng (FindaDelta)

學校 : 國立中正大學
編號 : 50066
來源 : [116.241.140.14]
最後登入時間 :
2022-09-17 15:32:51
a104. 排序 -- yoooooooo | From: [36.231.172.111] | 發表日期 : 2015-09-02 14:21

#include <stdio.h>

#include <stdlib.h>

 

void q_sort(int*,int,int);

 

int main(void)

{

int i=0;

int input;

while(scanf("%d",&input)!=EOF)

{

int *ptr;

ptr=(int*)malloc(sizeof(int)*input);

for(i=0;i<input;i++)

{

scanf("%d",ptr+i);

}

q_sort(ptr,0,input-1);

for(i=0;i<input;i++)

{

printf("%d ",*(ptr+i));

}

printf("\n");

}

 

return 0;

}

 

void q_sort(int *ptr,int left,int right)

{

int i,j,pivot,temp;

if(left<right)

{

i=left;

j=right+1;

pivot=*(ptr+left);

do{

do{

i++;

}while(*(ptr+i)<pivot);

do{

j--;

}while(*(ptr+j)>pivot);

if(i<j)

{

temp=*(ptr+i);

*(ptr+i)=*(ptr+j);

*(ptr+j)=temp;

}

}while(i<j);

 

temp=*(ptr+left);

*(ptr+left)=*(ptr+j);

*(ptr+j)=temp;

q_sort(ptr,left,j-1);

q_sort(ptr,j+1,right);

}

 

}

 

請問為什麼會RE?抱歉,程式新手還不會除錯...

 

 
#10201: Re:請問為什麼這樣會RE?


kujeng (FindaDelta)

學校 : 國立中正大學
編號 : 50066
來源 : [116.241.140.14]
最後登入時間 :
2022-09-17 15:32:51
a104. 排序 -- yoooooooo | From: [36.231.172.111] | 發表日期 : 2015-09-02 14:22

#include <stdio.h>
#include <stdlib.h>
 
void q_sort(int*,int,int);
 
int main(void)
{
int i=0;
int input;
while(scanf("%d",&input)!=EOF)
{
int *ptr;
ptr=(int*)malloc(sizeof(int)*input);
for(i=0;i<input;i++)
{
scanf("%d",ptr+i);
}
q_sort(ptr,0,input-1);
for(i=0;i<input;i++)
{
printf("%d ",*(ptr+i));
}
printf("\n");
}
 
return 0;
}
 
void q_sort(int *ptr,int left,int right)
{
int i,j,pivot,temp;
if(left<right)
{
i=left;
j=right+1;
pivot=*(ptr+left);
do{
do{
i++;
}while(*(ptr+i)<pivot);
do{
j--;
}while(*(ptr+j)>pivot);
if(i<j)
{
temp=*(ptr+i);
*(ptr+i)=*(ptr+j);
*(ptr+j)=temp;
}
}while(i<j);
 
temp=*(ptr+left);
*(ptr+left)=*(ptr+j);
*(ptr+j)=temp;
q_sort(ptr,left,j-1);
q_sort(ptr,j+1,right);
}
 
}

抱歉@@,剛剛排版又錯了

 
 
ZeroJudge Forum