[問題] define跟自訂函式

看板C_and_CPP (C/C++)作者 (fhcrc 99th ooxx)時間16年前 (2009/03/27 20:56), 編輯推噓1(103)
留言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
這種東西用Qsort不會比較快喔......
03/27 23:27, 2F

03/27 23:50, , 3F
能解釋一下嗎? 我只有碰過氣泡而已QQ
03/27 23:50, 3F

03/27 23:51, , 4F
先謝謝你的幫忙XD
03/27 23:51, 4F
文章代碼(AID): #19pCqOmx (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #19pCqOmx (C_and_CPP)