Re: [問題] define跟自訂函式
※ 引述《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
03/27 23:50, 1F
→
03/27 23:51, , 2F
03/27 23:51, 2F
推
03/27 23:55, , 3F
03/27 23:55, 3F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章