• 冒泡排序三种方法


    1. 冒泡排序基础用法
      1.   
        import java.util.Arrays;
        
        public class BubbleSort {
            public static void main(String[] args) {
                int[] array = new int[] {5,8,6,3,9,2,1,7};
                sort(array);
                System.out.println(Arrays.toString(array));
            }
        
            public static void sort(int array[]){
                for (int i = 0; i < array.length-1; i++) {
                    for (int j = 0; j < array.length - i - 1; j++) {
                        int tmp=0;
                        if (array[j]>array[j+1]){
                            tmp=array[j];
                            array[j]=array[j+1];
                            array[j+1]=tmp;
                        }
                    }
                }
            }
        
        }
    2. 冒泡排序优化第二版
      1.   与第一版代码相比,第二版代码做了小小的改动,利用一个Boolean作为标记。如果在本轮排序中,元素有交换,则说明数列无序;如果没有元素交换,则说明数列已经有序,然后直接跳出大循环。
      2. import java.util.Arrays;
        
        public class GoodBubbleSort {
            public static void main(String[] args) {
                int[] array = new int[]{5, 8, 6, 3, 9, 2, 1, 7};
                sort(array);
                System.out.println(Arrays.toString(array));
            }
        
            public static void sort(int array[]) {
                for (int i = 0; i < array.length - 1; i++) {
        //            有序标记,每一轮的初始值都是true
                    boolean isSorted = true;
                    for (int j = 0; j < array.length - i - 1; j++) {
                        int tmp=0;
                        if (array[j]>array[j+1]){
                            tmp=array[j];
                            array[j]=array[j+1];
                            array[j+1]=tmp;
        //                    因为有元素交换,所以不是有序的,标记为false
                            isSorted=false;
                        }
                    }
                    if (isSorted){
                        break;
                    }
                }
            }
        }
    3. 冒泡排序优化第三版
      1.   在第三版代码中,sortBorder就是无序数列的边界。在每一轮排序过程中,处于sortBorder之后的元素就不需要再进行比较了,肯定是有序的
      2. import java.util.Arrays;
        
        public class BestBubbleSort {
            public static void main(String[] args) {
                int[] array = new int[]{5, 8, 6, 3, 9, 2, 1, 7};
                sort(array);
                System.out.println(Arrays.toString(array));
            }
        
            public static void sort(int array[]) {
                for (int i = 0; i < array.length - 1; i++) {
        //            有序标记,每一轮的初始值都是true
                    boolean isSorted = true;
        //            无序数列的边界,每次比较只需要比到这里为止
                    int sortBorder = array.length - 1;
                    for (int j = 0; j < sortBorder; j++) {
                        int tmp = 0;
                        if (array[j] > array[j + 1]) {
                            tmp = array[j];
                            array[j] = array[j + 1];
                            array[j + 1] = tmp;
                            isSorted = false;
                        }
                    }
                    if (isSorted) {
                        break;
                    }
                }
            }
        }
    signature:祸兮福所倚,福兮祸所伏
  • 相关阅读:
    cesium入门示例-矢量化单体分类
    cesium入门示例-3dTiles加载
    cesium入门示例-geoserver服务访问
    cesium入门示例-HelloWorld
    java中函数传值与引用问题
    jni使用问题总结
    geoserver源码学习与扩展——增加服务接口
    go-ipfs入门及介绍
    安装GoMap
    Gogeos安装
  • 原文地址:https://www.cnblogs.com/xnuuuu/p/12114715.html
Copyright © 2020-2023  润新知