[問題] define跟自訂函式
看板C_and_CPP (C/C++)作者seedpk5079 (fhcrc 99th ooxx)時間16年前 (2009/03/27 20:56)推噓1(1推 0噓 3→)留言4則, 2人參與討論串1/2 (看更多)
http://0rz.tw/Bqz0a
這是ZJ c010
他要我抓中間數
用氣泡排序做過
可是TLE了... 所以我改用快速排序
不過問題重點不是這個
重點在我用紅色標起來的地方(沒改不會動...)
如果將change函數改成下面的這個
#define change(q,b){int c;c=q;q=b;b=c;}
我的快速排序法就能用了0.0(但是它變成會無條件的變換了耶... 變成我寫的有問題=.=)
註:看來問題不少... 題目上的60測資我沒過... 麻煩大家多多幫忙囉
還有個小問題
那個尚未弄懂(註解那裡)有人能解嗎?
#include<stdio.h>
int left,right,now[9999]={};
void change(int q,int b){
int c=q;
q=b;
b=c;
}
void quick_sort(int left,int right){
int i,j,key,w;
if(left<right){
key=now[left];
i=left+1;j=right;
printf("i=%d j=%d\n",i,j);
while(1){
if(i>=j){break;}
for(;now[i]<key&&i+1<=right;){/*i+1 j-1尚未弄懂*/
i++; }
for(;now[j]>key&&j-1>-1;){
j--; }
if(i<j){
change(now[i],now[j]);
}
}
if(left<j){
change(now[left],now[j]);
}
quick_sort(left,j-1);
quick_sort(j+1,right);
}
}
int main(){
int a,x=0;
while( scanf("%d",&a)!=EOF){
int l,i,j,h,k;
printf("x=%d\n",x);
now[x]=a;
printf("befoer%d %d %d %d %d %d\n",now[0],now[1],now[2],now[3],now[4],now[5]);
quick_sort(0,x);
printf("after%d %d %d %d %d %d\n",now[0],now[1],now[2],now[3],now[4],now[5]);
l=x/2;
if(x%2==1){/*偶數個數字*/
printf("()%d\n",(now[l]+now[l+1])/2);
}
else{
printf("()%d\n",now[l]);
}
x++;
}
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.60.161.254
→
03/27 21:05, , 1F
03/27 21:05, 1F
推
03/27 23:27, , 2F
03/27 23:27, 2F
→
03/27 23:50, , 3F
03/27 23:50, 3F
→
03/27 23:51, , 4F
03/27 23:51, 4F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章