排序之冒泡排序

(我们这块说升序思想) 排序思想:第一趟,从第一个记录开始到第n个记录,
对n-1对相邻的两个记录关键字进行比较,若前者大于后者,两者进行交换,这样一趟结束后,
最大的元素就在数组的末尾;
第二趟,从第一个记录开始到第n-1个记录,对n-2对相邻的两个记录关键字进行比较,
若前者大于后者,两者进行交换,
这样一趟结束,次大元素在数组的倒数第二个位置.....如此进行n-1次排序就能排序出来

public class bubbleSort {
    public static void main(String[] args) {
        Random r = new Random();
        int[] arr = new int[10000];
        for(int i = 0;i<arr.length;i++) {
            arr[i] = r.nextInt();
        }
        long t1 = System.currentTimeMillis();
        BubbleSort1(arr);
        long t2 = System.currentTimeMillis();
        System.out.println(t2);
        System.out.println(t1);
        System.out.println(t2 - t1);
        long t3 = System.currentTimeMillis();
        BubbleSort2(arr);
        long t4 = System.currentTimeMillis();
        System.out.println(t3);
        System.out.println(t4);
        System.out.println(t4 - t3);
    }
    
    public static void BubbleSort1(int arr[]) {
        for(int i = 1;i<arr.length;i++) {
            for(int j = 0;j<arr.length-i;j++) {
                if(arr[j]>arr[j+1]) {
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
    }
//    优化算法:我们加一个条件判断它是否交换,如果没有交换,那么就说明他已经排好序
    public static void BubbleSort2(int arr[]) {
        for(int i = 1;i<arr.length;i++) {
            Boolean b = false;
            for(int j = 0;j<arr.length-i;j++) {
                if(arr[j]>arr[j+1]) {
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                    b = true;
                }
            }
            if(b == true) break;
        }
    }
}
原文地址:https://www.cnblogs.com/du001011/p/10287051.html