[置顶] Java排序再巩固--BubbleSort

       提到冒泡排序,不知道大家还记得下面链接中的排序视频:冒泡排序,这个简单有趣的小视频有没有勾起内心深处的一点点回忆??下面小编就带着大家一起再来回顾和巩固这个经典的排序!

      提起冒泡排序,也许会有人说这个太简单,由于它只适合数据规模很小的情况,而且效率也比较低,所以没有必要提起,但是它作为我们的Java排序入门的经典,需要我们去重视它,巩固它;

这种排序算法,和它的名字一样的原理,每次的循环都要把大/小的元素“冒”出去,所以我们可以把这个原理总结成下面的这句话:

       升序:每一轮都会产生一个较大的数;第一轮循环执行完之后会产生一个最大的数并将最大的排到最后一个位置上;

       降序:每一轮都会产生一个较大的数,第一轮会将最小的放到最后一个位置上;

        了解了原理之后,我们一起来看代码的实现(比较的数为:4,7,8,9,3,2):

<span style="font-size:18px;">/**
 * 一共两层循环,内部循环控制的是比较的下标
 * @author root
 *
 */
public class BubbleSortTest {
	
	public static void bubbleSort(int[] array){
		for (int i = 0; i < array.length-1; i++) {
			for (int j = 0; j < array.length-i-1; j++) {
				if (array[j] > array[j+1]) {
					//如果前者大于后者二者交换位置
					int temp = array[j];
					array[j]=array[j+1];
					array[j+1] =temp;
				}
			}
			System.out.println("第" + (i+1)+"趟排序");
			
			for (int o = 0; o < array.length; o++) {
				System.out.print(array[o] +"  ");
			}
			System.out.println();
		}
	}
	
	public static void main(String[] args) {
		int [] array = {4,7,8,9,3,2};
		bubbleSort(array);
	}
}
</span>
        根据代码中的逻辑,我们可以将循环的执行情况总结为以下:

i = 0

j = 0

j = 1

j = 2

j = 3

j = 4

i = 1

j = 0

j =1 

j = 2

j = 3

i = 2

j = 0

j =1 

j = 2

i = 3

j = 0

j =1 

i = 4

j = 0

执行结果为:

        [置顶] Java排序再巩固--BubbleSort_第1张图片

        所以我们可以发现,这个冒泡排序一共会进行 N-1(N 为当前要比较的元素个数)次排序,而每一次循环中内层循环次数在不断减少(为什么??)。因为每一次循环执行完毕之后都会有S个元素的位置已经确定(S等于当前第几趟排序的序号);而内层的循环控制的是需要比较的下标。这样说来,刚才的那个问题也就迎刃而解了。

        上面就是小编关于冒泡排序的所有总结,不知道有没有帮大家回顾到冒泡排序这个经典中的经典呢?如果有更好的见解和建议,请大家留言哦!

        [置顶] Java排序再巩固--BubbleSort_第2张图片


你可能感兴趣的:([置顶] Java排序再巩固--BubbleSort)