java基础算法

冒泡排序

图解

编码实现

public class Sort {
    public static void main(String[] args) {
        //通过冒泡排序给当前的数字进行排序(升序)
        int arr1[] = {30,20,15,12,18,100};
        //进行多少次冒泡过程
        for (int i = 0; i < arr1.length-1; i++) {//将数组中的所有元素都通过遍历拿出来(进行多少次冒泡过程)
            boolean sorted = true;//每次冒泡之前,都假设本次无需区间有序了
            //遍历无序区间,做一次冒泡过程
            for (int j = 0; j < arr1.length-i-1; j++) {//开始进行数组中所有元素比较的循环操作
                /**
                 * 将相邻两个元素进行比较,如果当前的元素比后面元素大的情况下,
                 * 这两个元素进行位置交换
                 */
                if (arr1[j] > arr1[j+1]){//当前元素大于后面元素
                    //1.将小的元素(和当前元素相邻的元素)放到tmp这个空的容器中
                    int tmp = arr1[j+1];
                    //2.将原来大的元素(当前的元素)放入原来放小元素的位置
                    arr1[j+1] = arr1[j];
                    //3.将小的元素放入到原来大的元素的位置,至此完成位置的交换
                    arr1[j] = tmp;
                    sorted =false;//只要有过交换,无序区间有序的假设就不成立

                }
            }
            if (sorted){//每次冒泡之后,假设成立,整个数组有序
                break;
            }
        }
        for (int i:arr1) {
            System.out.print(i+ " ");
        }
    }
}
  重构
public static void bubbleSort(int[] array){
            boolean sorted = true;
            for (int i = 0; i < array.length-1; i++) {
                for (int j = 0; j < array.length-1-i; j++) {
                    if (array[j] > array[j+1]){
                        int tmp = array[j];
                        array[j] = array[j+1];
                        array[j+1] = tmp;
                        sorted = false;
                    }
                }
                if (sorted){
                    break;
                }
            }
        }

 public static void main(String[] args) {
            int[] array = {1,2,3,10,5,6};
            bubbleSort(array);
            System.out.println(Arrays.toString(array));
        }
    }
posted @ 2021-02-10 22:25  shamozhicheng  阅读(58)  评论(0编辑  收藏  举报