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

伊莉討論區

搜索
尊貴會員無限使用任何功能尊貴會員無限下載附件認識好友、聊天,分享生活趣事
mg三上銀魂gd幼女vrgd
墮落人妻舰队collureアオイトトラトリ甜點轉生blacksou

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

[簡]被稱為廢物的原英

[繁]身為魔王的我娶了

[繁]關於我轉生變成史

(4月新番)[繁]轉生貴

[繁]我的英雄學院 Mem

[繁]老夫老妻重返青春
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 1582|回復: 3
打印上一主題下一主題

[作業]資料結構 排序演算法[複製鏈接]

Rank: 1

帖子
371
積分
35 點
潛水值
5247 米
跳轉到指定樓層
樓主
發表於 2014-1-2 05:10 PM|只看該作者|倒序瀏覽
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php
本帖最後由 snowflying 於 2014-1-3 03:14 AM 編輯

  int[] tot={56,66,42,90,63,72,44,78};

         int tmpbox;

         int tmp;

           int n=8;

         int[] num={1,2,3,4,5,6,7,8};

         for ( int i=0;i<n;i++){

...
瀏覽完整內容,請先 註冊登入會員
分享分享0收藏收藏0支持支持0

使用道具檢舉

  博 士 (Goal)

快樂微笑

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

帖子
4772
積分
103053 點
潛水值
570974 米
頭香
發表於 2014-1-2 06:04 PM|只看該作者
本帖最後由 spiderman76012 於 2014-1-2 06:05 PM 編輯

我沒有用過JAVA所以身邊沒有JAVA編譯器
我已C++來貼好了
  1. #include <iostream>

  2. using namespace std;

  3. void show(int [], unsigned short);

  4. void main()
  5. {
  6.         int tot[] = {56, 66, 42, 90, 63, 72, 44, 78}, tmpbox, tmp, n = 8;
  7.         int num[] = {1, 2, 3, 4, 5, 6, 7, 8};
  8.         for ( int i = 0/* i 要改的話是這裡*/; i < n; i++)
  9.         {
  10.                 for (int j = 0/*j 要改的話是這裡*/; j < n - 1; j++)
  11.                 {
  12.                         if (tot[j] > tot[j + 1])
  13.                         {                       
  14.                                 tmpbox = tot[j];
  15.                                 tot[j] = tot[j + 1];
  16.                                 tot[j + 1] = tmpbox;
  17.                                 tmp = num[j];
  18.                                 num[j] = num[j + 1];
  19.                                 num[j + 1] = tmp;
  20.                         }
  21.                 }
  22.         }
  23.         //======此區多加的function======
  24.         cout << "tot[] = ";
  25.         show(tot, sizeof(tot) / sizeof(tot[0]));
  26.         cout << "num[] = ";
  27.         show(num, sizeof(num) / sizeof(num[0]));
  28.         //==============================
  29.         system("PAUSE");
  30. }

  31. void show(int arr[], unsigned short len)
  32. {
  33.         for(short i = 0; i < len; i++)
  34.                 cout << arr[i] << ' ';
  35.         cout << endl;
  36. }
複製代碼

以上是依你給的代碼所寫的
但是我有多添加輸出function為了看結果
輸出結果
tot[] = 42 44 56 63 66 72 78 90
num[] = 3 7 1 5 2 6 8 4

但妳問題是說要改成 i = 3 和 j = 4
那輸出結果
tot[] = 56 66 42 90 44 63 72 78
num[] = 1 2 3 4 7 5 6 8

還有你這代碼中tmpbox其實不用再宣告一個
可以沿用tmp
因為型別都一樣
就是你給的代碼部分處
  1. if (tot[j] > tot[j + 1])
  2. {                       
  3.      tmpbox = tot[j];
  4.      tot[j] = tot[j + 1];
  5.      tot[j + 1] = tmpbox;
  6.      tmp = num[j];
  7.      num[j] = num[j + 1];
  8.      num[j + 1] = tmp;
  9. }
複製代碼
可以改成
  1. if (tot[j] > tot[j + 1])
  2. {                       
  3.       tmp= tot[j];
  4.       tot[j] = tot[j + 1];
  5.       tot[j + 1] = tmp;
  6.       tmp = num[j];
  7.       num[j] = num[j + 1];
  8.       num[j + 1] = tmp;
  9. }
複製代碼
這樣就可以省 4 byte記憶體了
...
瀏覽完整內容,請先 註冊登入會員
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

Rank: 1

帖子
156
積分
197 點
潛水值
10160 米
3
發表於 2014-1-2 09:24 PM|只看該作者
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。
本帖最後由 0919739831 於 2014-1-2 09:26 PM 編輯

泡泡排序法

num是記錄tot排序完成後tot陣列裡的元素的原始位置

你把結果印出來之後 對照tot 與 num 裡的元素就可以發現了

其實我看不懂你要問什麼

使用道具檢舉

Rank: 1

帖子
10
積分
181 點
潛水值
15930 米
4
發表於 2014-1-25 10:43 PM|只看該作者
所有積分大於負-100的壞孩子,將可獲得重新機會成為懲罰生,權限跟幼兒生一樣。
本帖最後由 r2370992 於 2014-1-25 10:45 PM 編輯

講到排序演算法,就順便附上最簡單的插入法吧,泡泡有人回了
  1. #include<iostream>

  2. using namespace std;
  3. int main()
  4. {
  5.         int number_in[8]={56, 66, 42, 90, 63, 72, 44, 78},number_out[8]={};

  6. //插入排序法
  7.         number_out[0]=number_in[0];
  8.         for(int i=1;i<8;i++)
  9.         {
  10.                 for(int j=1;j<=i;j++)
  11.                 {
  12.                         if(i-j==0)    //目前OUT這排的第一個
  13.                                 {
  14.                                 if(number_out[i-j]>number_in[i])   //第一個,放最前面
  15.                                         {        for(int k=i;k>i-j;k--)
  16.                                                 {number_out[k]=number_out[k-1];}
  17.                                                 number_out[i-j]=number_in[i];
  18.                                         }
  19.                                 else        //找到該放的位子,插入
  20.                                         {   for(int k=i;k>i-j;k--)
  21.                                                 {number_out[k]=number_out[k-1];}
  22.                                                 number_out[i-j+1]=number_in[i];break;
  23.                                         }
  24.                                 }
  25.                         else        //目前OUT這排的非第一個
  26.                                 {        if(number_out[i-j]>number_in[i])     //比較小,繼續比
  27.                                                 {continue;}
  28.                                         else  //找到該放的位子,插入
  29.                                         {   for(int k=i;i-k+1<j;k--)
  30.                                                 {number_out[k]=number_out[k-1];}
  31.                                                 number_out[i-j+1]=number_in[i];break;
  32.                                         }
  33.                                 }
  34.                 }
  35.         }
  36.         //輸出
  37.         for(int i=0;i<8;i++)
  38.         {cout<<"   "<<number_out[i];}
  39.         system("pause");
  40.         return 0;
  41. }
複製代碼
...
瀏覽完整內容,請先 註冊登入會員

點評

snowflying 兩個 for loop 就可以了吧?  發表於 2014-1-28 09:39 PM
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

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

Powered by Discuz!

© Comsenz Inc.

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