[問題] merge sort寫不對

看板C_and_CPP (C/C++)作者 (cola)時間16年前 (2010/04/12 17:27), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 使用者輸入十個整數 讓電腦用merge sort去排序由小到大 希望得到的正確結果: 小~大 程式跑出來的錯誤結果: 一堆很大的數 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) dev c++ 有問題的code: (請善用置底文標色功能) void mergesort(int list[],int low,int high) { int mid; if(low<high) { mid=(low+high)/2; mergesort(list,low,mid); mergesort(list,mid+1,high); int temp[high]; int i,j,k; i=low; j=mid+1; k=low; while(i<=mid && j<=high) { if(list[i]<list[j]) { temp[k]=list[i]; i++; } else { temp[k]=list[j]; j++; } } ===================上面都是課本有的 下面課本只提供虛擬碼 不知到哪邊寫錯了 if(i>mid) { while(j<=high) { temp[k]=list[j]; j++;k++; } } else while(i<=mid) { temp[k]=list[i]; i++;k++; } while(low<=high) { list[low]=temp[low]; low++; } printf("這次排序後為 :"); int m; for( m=0;m<10;m++) printf("%d,",list[m]); } } 補上課本的虛擬碼 if ( i > mid ) move S[j] through S[high] to U[k] through U[high] else move S[i] through S[mid] to U[k] through U[high] move U[low] through U[high] to S[low] through S[high] -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 119.77.253.108

04/12 17:35, , 1F
merge 放進 temp 裡面時沒有 k++ ?
04/12 17:35, 1F

04/12 17:35, , 2F
......我少抄上一個k++ 問題解決~~
04/12 17:35, 2F

04/12 17:36, , 3F
嗯嗯 心靈感應到了 剛好發現@@
04/12 17:36, 3F

04/12 17:48, , 4F
可以推 在一起 了嗎XD
04/12 17:48, 4F
文章代碼(AID): #1BmkTrEx (C_and_CPP)
文章代碼(AID): #1BmkTrEx (C_and_CPP)