找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
感激所有對伊莉作出奉獻的人尊貴會員無限看帖不用回覆安全提問(回答) 和 永久尊貴會員 事宜
流出vr旬果幼女世紀帝國高中mg
3107217從解析野外学習lust acafsdss 454561300女朋友是

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]在地下城尋求邂逅

湖口中山路 開門不看

[繁]妻子變成小學生。

[繁]刀劍神域外傳 Gun

[繁]最狂輔助職業【話

[繁]孤單一人的異世界
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 1196|回復: 4
打印上一主題下一主題

[問題]快速排序~問題[複製鏈接]

帖子
172
積分
-45 點
潛水值
8707 米
跳轉到指定樓層
樓主
發表於 2013-6-1 01:34 PM|只看該作者|正序瀏覽
  1. #include <iostream>
  2. using namespace std;

  3. void Swap(int *x,int *y)
  4. {
  5. int z;
  6.   z=*x;
  7.   *x=*y;
  8.   *y=z;
  9. }


  10. void QSort(int a[],int h,int r)
  11. {
  12.      int i,j,m;
  13.      i=h+1;
  14.      j=r;
  15.      if ((h==r)||(h>r))  return;
  16.      while(i<j)
  17.      {
  18.                
  19.        while (a[h]>a[i])
  20.           i++;
  21.        while (a[h]<a[j])
  22.           j--;
  23.       
  24.       if(i >= j) break;

  25.           Swap(&(a[i]),&(a[j]));
  26.      }        
  27.      
  28.      Swap(&(a[h]),&(a[j]));

  29.      QSort(a,h,j-1);
  30.      QSort(a,i,r);

  31. }

  32. main()
  33. {
  34.       int a[10]={5,8,11,4,6,17,3,2,19,1},i;
  35.       
  36.       QSort(a,0,9);
  37.       
  38.       for(i=0;i<10;i++)
  39.          cout << a[i] << " ";
  40.          
  41.       cout << endl;   
  42.       system("pause");
  43. }
複製代碼

在練習快速排序時~寫成這樣~
感覺程序怪怪的~改數字就錯了~誰能告訴我哪裡出錯嗎?萬分感謝><
...
瀏覽完整內容,請先 註冊登入會員

點評

snowflying 改數字就錯了,比方說?  發表於 2013-6-1 02:13 PM
分享分享0收藏收藏0支持支持0

使用道具檢舉

  尊貴會員

Melty Snow  雪靈

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

帖子
3229
積分
24427 點
潛水值
78790 米
5
發表於 2013-6-1 09:56 PM|只看該作者
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。
aa627097 發表於 2013-6-1 07:05 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

所以我要怎麼改阿>

我不保證我的 code 沒有 BUG 唷
參考用,比較一下兩份的差異
  1. void QSort(int a[] , int left , int right)
  2. {
  3.         if(left >= right)
  4.             return;
  5.         int x = left + 1;
  6.         int y = right;
  7.         int pivot = a[left];
  8.        
  9.         while(x <= y)
  10.         {
  11.                 while(a[x] < pivot && x <= right) ++x;
  12.                 while(a[y] >= pivot && y > left) --y;
  13.                 if(x < y)
  14.                         swap(a[x] , a[y]);
  15.         }
  16.         swap(a[left] , a[y]);
  17.         QSort(a , left , y - 1);
  18.         QSort(a , x , right);
  19. }
複製代碼
...
瀏覽完整內容,請先 註冊登入會員
Melty Snow [雪靈]
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

帖子
172
積分
-45 點
潛水值
8707 米
4
發表於 2013-6-1 07:05 PM|只看該作者
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。
snowflying 發表於 2013-6-1 06:45 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

某一次 1 2 3 4 5 17 6 8 19 11
接下來呼叫 Qsort(a , 0 , 1)
因為 i >= j 所以迴圈沒進去

所以我要怎麼改阿><我還是新手QQ...
瀏覽完整內容,請先 註冊登入會員
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

  尊貴會員

Melty Snow  雪靈

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

帖子
3229
積分
24427 點
潛水值
78790 米
3
發表於 2013-6-1 06:45 PM|只看該作者
本帖最後由 snowflying 於 2013-6-1 07:01 PM 編輯
aa627097 發表於 2013-6-1 06:18 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

因為這組數字帶進去的答案會是:1,2,3,4,5,6,8,11,17,19
但是我把int a[10]={5,8,11,4,6,17,3,2,19,1}改成in ...
...
瀏覽完整內容,請先 註冊登入會員
Melty Snow [雪靈]

使用道具檢舉

帖子
172
積分
-45 點
潛水值
8707 米
頭香
發表於 2013-6-1 06:18 PM|只看該作者
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。
因為這組數字帶進去的答案會是:1,2,3,4,5,6,8,11,17,19
但是我把int a[10]={5,8,11,4,6,17,3,2,19,1}改成int a[10]={5,8,1,4,6,17,3,2,19,11}
答案會變成 2,1,3,4,5,6,8,11,17,19




使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部