作者death811125 (安安王子)
看板C_and_CPP
標題[問題] 一維陣列 基礎問題請益
時間Tue Jun 7 15:36:19 2016
開發平台(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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1465284981.A.A0A.html
1F:→ MOONRAKER: 閉上眼睛就會了解了。 06/07 15:54
2F:推 chuegou: 確保陣列最右邊為最大的 確保後不再檢查 減少檢查範圍 06/07 15:59
3F:→ chuegou: 你印出來的就是確保的順序 06/07 16:00
4F:推 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
5F:推 LPH66: 以你的「三角形」的話來說, 這是一個◤形的三角形 06/07 19:57
6F:→ LPH66: 左邊由上到下標 5 到 1, 上面由左到右標 0 到 4 06/07 19:59
7F:→ LPH66: 一個 * 往左跟往上即是一組 i 跟 j 06/07 19:59
8F:→ lucky1lk: i=5,j=0 排一次 i=5,j=1 排一次... 算惹 不排惹 06/07 22:14
9F:推 ogisun: i一樣是行數 j就是那一行裡面要比較幾次 06/08 00:36
10F:推 longlongint: 推個 逐步執行(? 06/08 01:29
11F:推 suwako: 內圈j全部跑完 i才會跑一圈的概念 06/08 07:38
12F:推 oread168: 先看懂if裡面在做甚麼 06/08 12:12
13F:推 LeiaRolando: 是不是被圖片誤導了以為那是一輪 06/08 13:51
14F:→ LeiaRolando: nowarp那邊j就作完一圈了 06/08 13:52
15F:→ LeiaRolando: 接著i=4 06/08 13:54
16F:→ LeiaRolando: sorry我看錯 不要裡我 06/08 13:56
17F:→ LeiaRolando: 作一次會拿到66最大 接著就不用再跟他比 06/08 14:01
18F:→ LeiaRolando: 所以只要用比data[3]比data[0,1,2] J<4-1 <3是比第0 06/08 14:04
19F:→ LeiaRolando: 12個 06/08 14:04
20F:→ LeiaRolando: 會找到第二大的34 接著就樣可以在少比一次 06/08 14:05
21F:→ LeiaRolando: 每一次最右邊那個一定會最大 所以每完一輪就能少比一 06/08 14:12
22F:→ LeiaRolando: 次 06/08 14:12
23F:→ LeiaRolando: 以上面那個例子就是最後你是拿到0123裡面最大的3 可 06/08 14:15
24F:→ LeiaRolando: 是不知道012的順序所以繼續再用012作一次 06/08 14:15
25F:→ LeiaRolando: 啊 你是用12345 06/08 14:17
26F:→ oread168: 12 23 34 45 得5最大 4次 I=5 J=0 做到J<I-1 -> J<4 06/08 15:58
27F:→ oread168: 0~3 4次 06/08 15:58