
C语言,冒泡法
楼上写的代码没错。
但是你写这个,和楼主在书上看到的东西没区别哈。
我帮你解释一下 for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } 这段代码是教材上的一段,首先我们分析代码,这里代码中定义的是一个占10个空间的数组a[],进行第一次外层循环,首先a[0]进行比较,和a[1]进行比较,如果a[0]>a[1]则改变a[0]的位置a[1],之后a[1]就比a[0]大,然后a[1]和a[2]进行比较,使a[2]大于a[1],……到a[8]和a[9]进行比较后a[9]大于a[8],从而说明a[9]此时的值在该10个数中最大;此后进行外层的第二次循环又从a[0]开始,一直到a[7]和a[8]进行比较,使a[8]在除去a[9]中的数中是第一大的数,是10个数中是第二大的数(只比a[9]小),从而把数组中的第二大的数确定出来;……;逐次循环就把第一(给你描述了的),第二(给你描述了的),第三大的数(自己按我的思路自己思考)……这就是冒泡法的思路了。
综上所述,总结下来,就是先确定第一大数,在确定第二大数,然后以此类推。
你在理解的时候因该是for(i=0;i<9-j;i++)中的i<9-j难理解,你想啊第一大数确定了后,第二大的数就不需要和第一大数比较了啊(在第一次循环中就确定a[9]是最大的数,a[8]肯定小于a[9]),就是这种思想,j是用来看此时是在比较第j+1大的数的。
到此,应该给你讲述清楚了吧。
如果还有什么问题——乐意为你解答——力所能及之处。
呵呵
C语言冒泡法
冒泡法:#define N 10#include
C语言冒泡法排序:任意输入十个数排序(从小到大;从大到小)
从大:#include 1、冒泡排:一趟一趟的将相邻的数进行交换如果有10个数则需要排9躺,是大到小输出则需要每次将后一个数和前一个数进行比较将较大的数赋值给钱一个数,将较小的数赋值给后一个数,其实就是两个数交换,那么第一趟交换完毕后,最小的数便出现在了数组的最后面,然后进行第二趟的比较时则要对余下的前9个数进行比较,9趟比较完成后则数组也已经排好序。 2、选择排序法:10个数则是需要排9次,若按降序排列,第一次比较:则是将数组的第一个元素与数组中从第二个元素开始到最后的元素进行比较找到最大的数记录下来然后将值赋值给数组的第一个元素,然后进行第二次比较:则是将数组的第二个元素与数组中从第三个元素开始到最后的元素进行比较,找最大的数记录下来将值赋值给数组的第二个元素。 。 。 依次循环找完C语言中冒泡排序法和选择排序法有哪些不同



