简单排序(冒泡 选择 插入)

冒泡排序

存在10个不同大小的气泡,由底至上地把较少的气泡逐步地向上升,这样经过遍历一次后,最小的气泡就会被上升到顶(下标为0),然后再从底至上地这样升,循环直至十个气泡大小有序。在冒泡排序中,最重要的思想是两两比较,将两者较少的升上去

eg:冒泡排序是从角标最大的开始比较的

/** * @Description 冒泡排序从下往上排序 ,由角标最大的依次往角标最小的排序 * 就像气泡一样 小的往上冒 ,大的在下面 * @param arr */
    public static void bubble(long[] arr) {
        long tmp;
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = arr.length - 1; j > i; j--) {
                if (arr[j] < arr[j - 1]) {
                    tmp = arr[j];
                    arr[j] = arr[j - 1];
                    arr[j - 1] = tmp;
                }
            }
        }
    }

选择排序

选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完


    /** * @Description 选择排序每次选出数组中的最小值(最大值),然后交换到arr【i】中,这样数组就排序好了(每次遍历都会将最小的数给选出来放到数组的该有位置) * @param arr */
    public static void select(long[] arr){
        int k = 0;
        long tmp = 0;
        for(int i = 0; i < arr.length-1; i++){
            k = i;
            for(int j = i; j < arr.length; j++){
                if(arr[j] < arr[k]){
                    tmp = arr[j];
                    arr[j] = arr[k];
                    arr[k] = tmp;
                }
            }
        }
    }

插入排序

插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 插入排序从角标为1开始

/** * * @Description插入排序 从第二个数开始,跟前面的数比较,如果小则插入在前面的数的前面 * @param arr */
    public static void insert(long[] arr){
        long tmp = 0;
        for(int i = 1; i<arr.length;i++){
            tmp = arr[i];
            int j = i;
            while(j>0 && arr[j-1]>=tmp){
                arr[j] = arr[j-1];
                j--;
            }
            arr[j] = tmp;
        }
    }
点赞