Java数组冒泡排序,面试必备

冒泡排序:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值
冒泡排序的实现原理是两个相邻的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换。
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

public class BubbleSort {
    public static void main(String[] args) {
       int[] arr = { 34, 19, 11, 109, 3, 56 };
        System.out.println("排序前数组是:");
        for (int num:arr) {
            System.out.print(num+" ");
        }
        for (int i = 0; i < arr.length-1; i++) {//外层循环控制排序趟数
            for (int j = 0; j < arr.length-1-i; j++) {//内层循环控制每一趟排序多少次
                if (arr[j] > arr[j+1]){
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        System.out.println();//换行

        System.out.println("排序后的数组是:");
        for (int num:arr) {
            System.out.print(num+" ");
        }
    }
}

输出结果:
在这里插入图片描述
其中的实现过程如下表示:
{ 34, 19, 11, 109, 3, 56 }//没有排序之前的数组顺序
执行第一次外循环:
执行内循环,开始第一次排序
34 >19交换位置 { 34, 19, 11, 109, 3, 56 } { 19, 34, 11, 109, 3, 56 }
第二次内循环排序
34 < 11交换位置 { 19, 34, 11, 109, 3, 56 } { 19, 11, 34, 109, 3, 56 }
第三次内循环排序
34 < 109 不交换位置 { 19, 11, 34, 109, 3, 56 } { 19, 11, 34, 109, 3, 56 }
第四次内循环排序
109 > 3 交换位置 { 19, 11, 34, 109, 3, 56 } { 19, 11, 34, 3, 109, 56 }
第五次次内循环排序
109 > 56 交换位置 { 19, 11, 34, 3, 109, 56} { 19, 11, 34, 3, 56, 109 }
执行第二次外循环:
执行内循环,开始第一次排序
19>11 交换位置 { 19, 11, 34, 3, 56, 109 } { 11, 19, 34, 3, 56, 109 }
第二次内循环排序
34 > 3 交换位置 { 11, 19, 34, 3, 56, 109 } { 11, 19, 3, 34, 56, 109 }
第三次内循环排序
34 < 56 不变位置 { 11, 19, 3, 34, 56, 109 } { 11, 19, 3, 34, 56, 109 }
第四次内循环排序
56 < 109不变位置 { 11, 19, 3, 34, 56, 109 } { 11, 19, 3, 34, 56, 109 }
执行第三次外循环:
执行内循环,开始第一次排序
11 < 19 不交换 { 11, 19, 3, 34, 56, 109 } {11, 19, 3, 34, 56, 109 }
第二次内循环排序
19 > 3 交换位置 {11, 19, 3, 34, 56, 109 } {11, 3, 19, 34, 56, 109 }
第三次内循环排序
34 < 56 不交换 {11, 3, 19, 34, 56, 109 } {11, 3, 19, 34, 56, 109 }
执行第四次外循环:
执行内循环,开始第一次排序
11 > 3交换位置 {11, 3, 19, 34, 56, 109 } {3, 11, 19, 34, 56, 109 }
19 < 34 不交换 {3, 11, 19, 34, 56, 109 } {3, 11, 19, 34, 56, 109 }
执行第五次外循环:
执行内循环,开始第一次排序
3 <11 不交换 {3, 11, 19, 34, 56, 109 } {3, 11, 19, 34, 56, 109 }

你可能感兴趣的:(Java数组冒泡排序,面试必备)