看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev-C++ 問題(Question): 小弟目前在自學C,目前學到陣列排序 如附圖,小弟沒辦法了解那這兩行 for(i=5;i>0;i--) for(j=0; j<i-1; j++) 希望大大能解釋這兩行程式碼怎麼去解釋左邊附圖那變換位置 謝謝各位前輩 *[36m程式碼(Code):(請善用置底文網頁, 記得排版) http://imgur.com/EZzP8OY -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.29.87 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1465284981.A.A0A.html
MOONRAKER: 閉上眼睛就會了解了。 06/07 15:54
chuegou: 確保陣列最右邊為最大的 確保後不再檢查 減少檢查範圍 06/07 15:59
chuegou: 你印出來的就是確保的順序 06/07 16:00
winken2004: google bubble sort 06/07 16:24
補充一下我的盲點 因為我在學巢式迴圈打9宮格*字號的時候 理解是外圈for等於寫行數 內圈for等於打出* 這個我無法理解i跟j的關係 QQ ※ 編輯: death811125 (1.171.29.87), 06/07/2016 17:13:06
LPH66: 以你的「三角形」的話來說, 這是一個◤形的三角形 06/07 19:57
LPH66: 左邊由上到下標 5 到 1, 上面由左到右標 0 到 4 06/07 19:59
LPH66: 一個 * 往左跟往上即是一組 i 跟 j 06/07 19:59
lucky1lk: i=5,j=0 排一次 i=5,j=1 排一次... 算惹 不排惹 06/07 22:14
ogisun: i一樣是行數 j就是那一行裡面要比較幾次 06/08 00:36
longlongint: 推個 逐步執行(? 06/08 01:29
suwako: 內圈j全部跑完 i才會跑一圈的概念 06/08 07:38
oread168: 先看懂if裡面在做甚麼 06/08 12:12
LeiaRolando: 是不是被圖片誤導了以為那是一輪 06/08 13:51
LeiaRolando: nowarp那邊j就作完一圈了 06/08 13:52
LeiaRolando: 接著i=4 06/08 13:54
LeiaRolando: sorry我看錯 不要裡我 06/08 13:56
LeiaRolando: 作一次會拿到66最大 接著就不用再跟他比 06/08 14:01
LeiaRolando: 所以只要用比data[3]比data[0,1,2] J<4-1 <3是比第0 06/08 14:04
LeiaRolando: 12個 06/08 14:04
LeiaRolando: 會找到第二大的34 接著就樣可以在少比一次 06/08 14:05
LeiaRolando: 每一次最右邊那個一定會最大 所以每完一輪就能少比一 06/08 14:12
LeiaRolando: 次 06/08 14:12
LeiaRolando: 以上面那個例子就是最後你是拿到0123裡面最大的3 可 06/08 14:15
LeiaRolando: 是不知道012的順序所以繼續再用012作一次 06/08 14:15
LeiaRolando: 啊 你是用12345 06/08 14:17
oread168: 12 23 34 45 得5最大 4次 I=5 J=0 做到J<I-1 -> J<4 06/08 15:58
oread168: 0~3 4次 06/08 15:58