为了方便大家理解,我尽量写的浅显易懂,同时希望大家把不理解的发到评论中,我会尽所能,帮助你l理解。
欢迎qq进行交流问题:
本人QQ :1770115451 算法交流群: 1061907071
总体思路:
前一个元素与后一个元素进行比较,将大的元素放到后边(交换),一轮比较后,最大的元素就会出现在最后的位置,然后继续从剩下的元素寻找最大的元素。由于每一轮比较后,会在数组最后面确定了一个位置。如果将数组的最后一个位置比作 天花板。那么每进行一轮比较所得出的最大元素会占用一个位置。所以天花板的高度就会降低一个位置。也就是说,天花板的位置-1。
//下图是关于数组中天花板的解释
算法实现步骤:
第一步:定义一个外层循环,控制天花板的高度。
第二步:在定义一个内层循环,用来控制前一个元素与后一个元素的比较
第三步:如果前一个元素大于后一个元素,则进行交换,反之不变
关键代码:
1 //冒泡排序法 2 public static void bobbleSort (int arr[]){ 3 //天花板从高到底逐次递减 4 for(int celing = arr.length-1;celing>=0;celing--){ 5 //从第一个位置到天花板的位置一次进行比较 6 for(int i=0;i<celing;i++){ 7 if(arr[i]>arr[i+1]){ 8 //如果前面的元素大于后面的元素,则交换 9 int temp=arr[i]; 10 arr[i]=arr[i+1]; 11 arr[i+1]=temp; 12 } 13 } 14 } 15 }