冒泡排序

public class OrderClass {


    /**
     * 冒泡升序排
     * 打印出每次的排序结果
     *原理:小的往上挪,大的往下沉
     * 比较相邻的两个数据,如果第二个数小,就交换位置。
     *从后向前两两比较,一直到比较最前两个数据。
     * 最终最小数被交换到起始的位置,这样第一个最小数的位置就排好了。
     *继续重复上述过程,依次将第2.3...n-1个最小数排好位置。
     * 优化:加个标识,如果没有移动的就说明结束了
     * 空间复杂度:O(1)
     * 时间复杂度O(n的二次方)
     * 稳定排序
     * @param arr
     */
    public  void bubble(int[] arr) {
        if(arr.length>0) {
            boolean flag=false;
            printNum(arr);
            for(int i=0;i<arr.length-1;i++){
                int temp=0;
                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;
                    }else{
                        flag=false;
                    }
                }
                if(!flag) {
                    break;
                }
                printNum(arr);
            }
        }
    }
        public static void printNum(int[] obs) {
            for(int i=0;i<obs.length;i++) {
                System.out.print(obs[i]+" ");

            }
            System.out.println();
        }
    public  static void main(String[] arr) {
        int[] nums={69,45,67,12,34,4,5,7,89};
       new Order0226().bubble(nums);


    }
}

 

posted @ 2020-02-26 22:26  YungRing  阅读(166)  评论(0)    收藏  举报