伊莉討論區

標題: [已解決]氣泡排序法for迴圈內的邏輯&註解 [打印本頁]

作者: 覽不浪    時間: 2018-8-24 11:56 AM     標題: [已解決]氣泡排序法for迴圈內的邏輯&註解

本帖最後由 覽不浪 於 2018-8-24 02:36 PM 編輯

各位大神好~小的程設剛入門,裡面for迴圈內的程式碼並不是很清楚,請問裡面的交換資料是如何演算??如有註解能提供訊息給我嗎??謝謝以下


  for(i=3;i>=0;i--)//氣泡排序
  {
     for(j=0;j<=i;j++)
     {
        if(data[j]>data[j+1])
        {
            t=data[j];//交換資料
            data[j]=data[j+1];
            data[j+1]=t;
        }
     }
  }

作者: jackyo04    時間: 2018-8-24 01:05 PM

  1. for(i=3;i>=0;i--)// 定義第一層迴圈(第一次會先跑,等第二層迴圈跑完才會執行)
  2.   {
  3.      for(j=0;j<=i;j++)// 第二層迴圈(判斷 j <= i)
  4.      {
  5.         if(data[j]>data[j+1])// 比較陣列
  6.         {
  7.             t=data[j];// 將陣列第 J 個資料給t
  8.             data[j]=data[j+1];// 將陣列第 J + 1的位置的資料,放到 J 的位置
  9.             data[j+1]=t;// 原先放到 t 的資料,放到J + 1的位置裡
  10.         }
  11.      }
  12.   }
複製代碼
第一次跑是 i = 3, j = 0,之後等第二層迴圈處理完,也就是說,接下來是執行 i = 3, j = 1;i = 3, j = 2;i = 3, j = 3,此時第二層迴圈執行完了,第一層迴圈可以執行了→i = 2, j = 0;i = 2, j = 1......以此類推..
如果可以,看能不能找幾個題目來練習,你會比較清楚,譬如印出:1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55
作者: 覽不浪    時間: 2018-8-24 02:19 PM

jackyo04 發表於 2018-8-24 01:05 PM
第一次跑是 i = 3, j = 0,之後等第二層迴圈處理完,也就是說,接下來是執行 i = 3, j = 1;i = 3, j = 2; ...

了解了!!這樣應該是氣泡排序法5個整數所比較的次數,算出來是4*3*2*1
作者: jackyo04    時間: 2018-8-24 03:10 PM

覽不浪 發表於 2018-8-24 02:19 PM
了解了!!這樣應該是氣泡排序法5個整數所比較的次數,算出來是4*3*2*1

迴圈的敘述盡量以++為主,少用--
這是程式寫久,大家統一個規則...
我也不知道為什麼XD
統一敘述方式比較容易讓別人看得懂


作者: johnwanz    時間: 2018-8-27 11:49 AM

就如同學數學一樣, 是從加法開始. 所以, 遞增在概念上對所有人都容易理解, 所以遞增寫法是比較常用的.

且, 通常for迴圈較為適合用於, 已知不變之迴圈次數. 當計算數量, 自然用加法計數是最自然不過的.

for迴圈也可以使用於非+1/-1, 其實怎麼寫, 都依照需求而定. 當遇到有需要的時候, 挑選覺得適合, 並容易閱讀的方式, 即可.




歡迎光臨 伊莉討論區 (http://www55.eyny.com/) Powered by Discuz!