算法(三)冒泡排序法

    xiaoxiao2022-07-14  136

    排序法一。

    先说最容易理解的这种算法。它的思路是逐个比较取最小的放在前面

    public class Demo1 { public static void main(String[] args) { Demo1 d1=new Demo1(); int[] values = { 8, 1, 6, 2, 9, 0, 7, 4, 5, 3 }; d1.arithmetic1(values); } public void arithmetic1(int[] values){ int temp=0; //外层循环代表了比较个数 for (int i = 0; i < values.length-1; i++) { //内层循环代表了每个比较次数 for(int j=i;j<values.length-1;j++){ if(values[i]>values[j+1]){ temp=values[i]; values[i]=values[j+1]; values[j+1]=temp; } System.out.println(Arrays.toString(values)); } System.out.println("==============================="); } } }

    运算结果:

    从这里可以看到逐渐比较次数是减少的。这其实就是数学里面的分组思想,所以我才说最容易理解。

    排序法二

    public class Demo2 { public static void main(String[] args) { Demo1 d1=new Demo1(); int[] values = { 8, 1, 6, 2, 9, 0, 7, 4, 5, 3 }; d1.arithmetic1(values); System.out.println(Arrays.toString(values)); } public static void arithmetic1(int[] values) { int temp; //外层依然是比较个数 for (int i = 0; i < values.length; i++) { //内层依然是次数,只不过这是两两想比较, //最后最大的数放在最后。所以要减去i以免做无用的比较 for (int j = 0; j < values.length - 1 - i; j++) { if (values[j] > values[j + 1]) { temp = values[j]; values[j] = values[j + 1]; values[j + 1] = temp; } } } } }

    计算结果:

    优化方面只要添加一个Boolean型变量就可以了。

    最新回复(0)