2 qq 37130151 qq_37130151 于 2017.01.05 10:28 提问

c语言问题关于冒泡法排序的

不明白后边的冒泡法排序是j<n-k求解释图片图片

5个回答

Tiger_Zhao
Tiger_Zhao   Rxr 2017.01.05 11:00
已采纳

这个函数写得不够直观。
j循环的效果就是把a[0]..a[n-k]最重(大)的一个成员“沉”到a[n-k]处。
大概叫“沉没法”比较恰当。
其实把两个循环写成下面的方式会更好理解

for(k=n-1;k>=1;k--)
    for(j=0;j<k;j++)
welan123123
welan123123   2017.01.05 10:44

冒泡排序的核心是每次找出剩余对象中最大或最小值,j<n-k 中k就代表已经找出来的最大或最小值的数量,接下来只需要在剩余对象中循环比较找出最大或最小值

qq_29594393
qq_29594393   Ds   Rxr 2017.01.05 11:00
cmqwan
cmqwan   2017.01.05 11:19

冒泡排序就是:每一轮都找到最大的一个数,然后放到最后。
第一个for循环表示的就是一共要循环几轮,对应k。
第二个for循环是在每一轮里面对每个数进行循环,对应j。
总个数是n。
你可以按照程序的思维走一遍:
第一轮,每个都会走一遍,找到最大的放在最后。k=1,j=5。
第二轮,按理说每个都会走一遍,但是第一轮已经把最大的放到最后,所以最后一个肯定比前面的都大,就没必要在比较一次了,所以少比一次。k=2,j=4。
第三轮,同理,最后2个肯定比前面的大,就少比2次。k=3,j=3。
。。。
然后找下规律,k,j,n是一个等式,就可以得出结论的呢

xuan521521
xuan521521   2017.01.05 11:22

治好了老子多年的颈椎病

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!