Tres formas de implementar la ordenación de burbujas en java

La idea principal de la clasificación de burbujas es comparar el tamaño de los dos elementos antes y después. Si a [i]> a [i + 1], intercambie los valores de los dos elementos

import java.util.Random;

public class SortTest {
    static int a[] = new int[100000];
    static{
        for (int i = 0; i < 100000; i++) {
            Random random = new Random(100000);
            a[i] = random.nextInt();
        }
    }
    public static void main(String[] args) {
        long t1 = System.currentTimeMillis();
        SortTest.MaoPao1();
        System.out.println("排序1执行时间:");
        System.out.println(System.currentTimeMillis()-t1);

        long t2 = System.currentTimeMillis();
        SortTest.MaoPao2();
        System.out.println("排序2执行时间:");
        System.out.println(System.currentTimeMillis()-t2);

        long t3 = System.currentTimeMillis();
        SortTest.MaoPao3();
        System.out.println("排序3执行时间:");
        System.out.println(System.currentTimeMillis()-t3);
    }

    /**
     * 冒泡排序1
     *
     */
    public static void MaoPao1(){
        for (int i = 0; i < a.length ; i++) {
            for (int j = i+1; j <a.length ; j++) {
                if (a[i]>a[j]){
                    int temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }
            }
//            System.out.println("第"+i+"次执行之后的数据");
//            for (int z = 0; z < a.length; z++) {
//                System.out.print(a[z]+" ");
//            }
//            System.out.println("");
        }
    }

    /**
     * 冒泡排序2
     */
    public static void MaoPao2(){
        for (int i = 0; i < a.length-1; i++) {
            for (int j = 0; j <a.length-1 ; j++) {
                if(a[j]>a[j+1]){
                    int temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }
            }
//            System.out.println("第"+i+"次执行之后的数据");
//            for (int z = 0; z < a.length; z++) {
//                System.out.print(a[z]+" ");
//            }
//            System.out.println("");
        }
    }

    /**
     * 冒泡排序3
     * 思想:找到一个临界点,该临界点之后的元素全部都是有序的
     * 推荐用这种,效率比较高
     */
    public static void MaoPao3(){
        int flag = a.length-1;
        while(flag > 0){
            int num = flag;
            flag=0; // 每次初始化临界点
            for (int i = 0; i < num; i++) {
                if(a[i]>a[i+1]){
                    int tmp = a[i];
                    a[i] = a[i+1];
                    a[i+1] = tmp;
                    flag = i;
                }
            }
        }
    }


}

 

Supongo que te gusta

Origin blog.csdn.net/u013804636/article/details/107953034
Recomendado
Clasificación