冒泡排序

冒泡排序,双重for循环,所以时间复杂度是O (n*n)

内层循环每次做相邻两个数字的比较,每循环一次比较出两个数字的大小,

外层循环,没循环一次,将一个数上升到他的正确位置。

 

package sort;

/**
 * @author: tianhaichao
 * @date: 2022/9/15 10:15
 * @description: 冒泡排序
 */
public class BubbleSort {

    public static  void sortUp(int[] array) {
        int temp;
        // 从第一个数开始,每一次循环,排好一个数字的位置,把最大的数上升到最上面
        for (int i = 0; i < array.length -1; i++) {
            BubbleSort.print(array);
            //从第一个数开始,每一次循环,将当前数字与他的后一位做比较,如果比后一位大,两者交换,否则不动。
            for (int j = 0; j < array.length - i - 1; j++) {
                if (array[j] > array[j + 1]) {
                    temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }

        }
    }

    /**
     * @author: tianhaichao
     * @date: 2022/9/15 14:51
     * @description:对于相对有序的数据,能节省很多效能
     */
    public static  void sortUp2(int[] array) {
        int temp;
        boolean toExchange = true;
        for (int i = 0; i < array.length -1; i++) {
            BubbleSort.print(array);
            toExchange = true;
            for (int j = 0; j < array.length - i - 1; j++) {
                if (array[j] > array[j + 1]) {
                    temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                    toExchange = false;
                }
            }
            if(toExchange){
                break;
            }

        }
    }



    public static void main(String[] args) {
        int[] array = new int[]{1,2,3,6,10,9,5,4};
        BubbleSort.sortUp(array);
        System.out.println("======================");
        array = new int[]{1,2,4,6,11,9,5,10};
        BubbleSort.sortUp2(array);
    }

    public static void print(int[] array){
        for (int i = 0;i<array.length;i++){
            System.out.print("   ");
            System.out.print(array[i]);
            System.out.print("   ");
        }
        System.out.println();
    }
}

  

posted @ 2022-09-17 16:29  田海超  阅读(30)  评论(0编辑  收藏  举报