冒泡排序求解惑
for ( i = 0; i < su - 1; i++) {//比较轮数,比较减一次(su-1)//因为每次比较一次少一个元素(su-1),但每次循环i++,所以要(su-1-i)才是少一个元素
for (j = 0; j < su - 1 - i; j++) {//
if (a > a) {//两个相邻的元素判断
int tap = 0;
tap=a;
a = a;
a = tap;
}
}
}
老哥们,冒泡排序第二个for循环(j<su-1-i)我没有整明白,写成(su-1)的话结果也是对的。求解惑 之后的元素是有序的,并且是冒上去的泡,你比较不比较,他们都是大的(或者小的,根据你的条件)
你这个问题,自己动手在纸上画一下就行了。 楼上已解答{:10_256:} 那我就领鱼币吧{:10_256:} 白嫖个鱼币 循环次数的问题,你可以放一个变量进去看看有-i和没-i的循环次数是多少. 不许白嫖{:5_109:} 内层循环 for 条件 j < su - 1 - i 与 j< su - 1 结果一样,前者就能完成排序了,因为外层循环一次,就会有一个已经排序完成了,下次外层循环就没必要再对其进行比较了。
给你一张图看看就知道了。即使你把内层循环的条件改为后者,也仅仅是多跑几遍if,二不会真的交换,因为后面的已经排好序了,已经不符合交换的条件了
sunrise085 发表于 2020-5-11 09:31
内层循环 for 条件 j < su - 1 - i 与 j< su - 1 结果一样,前者就能完成排序了,因为外层循环一次,就会有 ...
谢谢 大甲鱼qq 发表于 2020-5-11 09:29
循环次数的问题,你可以放一个变量进去看看有-i和没-i的循环次数是多少.
谢谢
页:
[1]