作者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/cn.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