1、冒泡排序原理 :对于一组数据,比较相邻数据的大小,值小的数据放在前面,值大的数据放在后面。(以下按升序排列,即从小到大排列) 例如:$arr=array(6,3,8,2,9,1); $arr有6条数据,按照pairwise比较大小如下,注意比较轮次和每轮比较次数 第一轮排序: 第一轮比较6和3的比较结果:368291 6和3的第二次比较比较结果:368291 8和2的第三次比较比较结果:362891 8和9的第四次比较比较结果:362891 9和1的第五次比较结果:362819 第一轮比较总结:1.第一轮排序比较5次,没有得到从小到大的排序。2.因为每次比较都是大数在后,所以比较完成后可以确定大数排在最后(9已经冒泡了,所以可以省略下一轮比较) 第二轮排序: first第一次比较3和6的结果:362819 第二次比较6和2的结果:326819 第三次比较6和8的结果:326819 第四次比较8和1的结果:326189 第二轮比较总结:1、第二轮排序和4比较,没有得到从小到大的排序2.8冒泡了,下一轮就不用再比较8了。 第三轮排序: 第一次比较3和2比较结果:236189 第二次比较3和6结果:236189 第三轮6和1比较比较结果:231689 第三轮比较总结:1.第三轮排序和3比较,没有到大排序2.6生成冒泡后,下一轮就不用再比6了。 第四轮排序: 2和3第一次比较的结果:231689 3和1第二次比较的结果:213689 第四轮比较总结:1.排序第4轮,比较2次,没有得到从小到大的排序2。冒出3,下一轮不用再比较3。689 第五轮比对总结:1.在第5轮排序中,比对了一次,没有得到从小到大的排序。通过5轮排序,完成整个排序。 通过以上五轮排序和几次比较,我们有理由推断出一个结论: 对于一个长度为N的数组,我们需要排序N-1轮,每i轮需要比较N-i次.为此,我们可以使用双循环语句,外循环控制循环的轮数,内循环控制每一轮的比较次数。代码实现:$arr=[11,3,56,62,21,66,32,78,36,76,39,88,34];//这一层循环控制需要冒泡的轮数for($i=1;$i
