Re: [問題] define跟自訂函式

看板C_and_CPP (C/C++)作者 (亨利喵)時間16年前 (2009/03/27 22:35), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《seedpk5079 (fhcrc 99th ooxx)》之銘言: : http://0rz.tw/Bqz0a : 這是ZJ c010 : 他要我抓中間數 : 用氣泡排序做過 : 可是TLE了... 所以我改用快速排序 用兩顆heap吧! 每次花log n而已? : 不過問題重點不是這個 : 重點在我用紅色標起來的地方(沒改不會動...) : 如果將change函數改成下面的這個 : #define change(q,b){int c;c=q;q=b;b=c;} 你change要call by reference壓! : 我的快速排序法就能用了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: 219.71.193.65

03/27 23:50, , 1F
什麼是call by reference0.0?
03/27 23:50, 1F

03/27 23:51, , 2F
先謝謝你的幫忙XD
03/27 23:51, 2F

03/27 23:55, , 3F
change(int *a, int *b)
03/27 23:55, 3F
文章代碼(AID): #19pEH9ca (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #19pEH9ca (C_and_CPP)