[問題] 快速排序法問題

看板C_and_CPP作者 (跟節拍器不合)時間11年前 (2013/04/11 18:41), 編輯推噓3(307)
留言10則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev-C++ 問題(Question): 出現錯誤 錯誤結果(Wrong Output): http://ppt.cc/YwQc 程式碼(Code):(請善用置底文網頁, 記得排版) void qsort(int list[],int left,int right){ int i,j,temp,pivot; if(left<right){ i=left; j=right+1; pivot=list[left]; } while(i<j){ do{i++;}while(list[i]<pivot&&i<=right); do{j--;}while(list[j]>pivot&&j>=left); if(i<j){ temp=list[i]; list[i]=list[j]; list[j]=temp; } } temp=list[left]; list[left]=list[j]; list[j]=temp; qsort(list,left,j-1); qsort(list,j+1,right); } int main(){ int a[]={26,5,19,1,15}; int i; qsort(a,0,4); for(i=0;i<=4;i++){ printf("%d ",a[i]); } system("pause"); return 0; } 補充說明(Supplement): 以小弟的腦容量改到不知道哪有問題...請高手替我解惑 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.175.12.47

04/11 18:43, , 1F
妳只有五個元素?
04/11 18:43, 1F
※ 編輯: grandoph 來自: 1.175.12.47 (04/11 18:44)

04/11 18:45, , 2F
有更改過,原本有10個
04/11 18:45, 2F

04/11 18:46, , 3F
抱歉
04/11 18:46, 3F

04/11 23:23, , 4F
if(left<right){ 這邊的括號
04/11 23:23, 4F

04/11 23:23, , 5F
你這樣如果left>=right i和j不就沒初始值?
04/11 23:23, 5F

04/11 23:25, , 6F
left>=right表示這一邊沒東西要sort了 就要return了
04/11 23:25, 6F

04/11 23:26, , 7F
還有 除非你是真的要自己練習寫quick sort
04/11 23:26, 7F

04/11 23:26, , 8F
不然我記得內建的library應該有qsort
04/11 23:26, 8F

04/11 23:33, , 9F
if(left<right){ ....包到 qsort(list,j+1,right)之前吧
04/11 23:33, 9F

04/11 23:34, , 10F
更正 之後..
04/11 23:34, 10F
文章代碼(AID): #1HPfDGmC (C_and_CPP)