Java之冒泡排序算法

请补全冒泡排序算法,并将数组{34, 12, 42, 23, 33, 236}排序后输出

img

冒泡排序的思想

每次从数组中找出最大值放在数组的后面去。
实现冒泡排序的关键步骤分析

确定总共需要做几轮: 数组的长度-1.
每轮比较几次:

img

当前位置大于后一个位置则交换数据

img

代码如下:

img

         public static void sortM(int [] arr){
             int count=0;
             int temp;//临时变量
             boolean flag;//是否交换的标志
             for(int i=0; i<arr.length-1; i++){   
                 //表示趟数,一共 arr.length-1 次
                // 每次遍历标志位都要先置为false,才能判断后面的元素是否发生了交换
                 flag = false;
                 for(int j=arr.length-1; j>i; j--){ //选出该趟排序的最大值往后移动
                     if(arr[j] < arr[j-1]){
                         temp = arr[j];
                         arr[j] = arr[j-1];
                         arr[j-1] = temp;
                         flag = true;
                         
                     }
                  }
                 
             }
          }


public class BubbleSort {
    public static void main(String[] args) {
        //对34,5,22,-98,6,-76,0,-3这一组数从小到大排序
        int arr[] = new int[]{34, 5, 22, -98, 6, -76, 0, -3};
        //外层循环控制排序的次数
        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;
                }
            }
        }
        //循环遍历输出数组中的每一个元素
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }

    }
}