android 簡單說一下排序吧,常用的那麼兩三種排序算法以及在Android項目中怎麼運行java的main方法

首先感謝同學們的留言Thanks♪(・ω・)ノ,這篇文章也是應同學的邀請,簡單寫一下常用的排序算法,後續還會持續更新

1.第一個–選擇排序,面試的時候也是有人問過的
說白了就是遍歷數組,找出最小的,交換位置

/**選擇排序
     *遍歷數組  然後每次遍歷到一個元素之後  繼續遍歷該元素之後的所有元素 然後找到最小的元素 和其換位置
     */
    public static int[] select(int[] array){
        for (int i = 0; i < array.length; i++) {
            int minPos = i;
            for (int j = i + 1; j < array.length; j++) {
                if (array[j] < array[minPos]){
                    minPos = j;
                }
            }
            if (array[i] > array[minPos]) {
                int temp = array[i];
                array[i] = array[minPos];
                array[minPos] = temp;
            }
        }
        return array;
    }

2.第二個–插入排序,
依然是遍歷,倆倆比較,兩層循環全遍歷一遍

/**插入排序
     *相當於  從0開始一直++  然後一直排列索引跟之前的元素
     */
    public static int[] insert(int[] array) {
        for (int i = 1; i < array.length; i++) {
            int temp = array[i];
            for (int j = i - 1; j >= 0 ; j--) {
                if (array[j] > temp ) {
                    array[j + 1] = array[j];
                    array[j] = temp;
                }
            }
        }
        return array;
    }

前面這兩種代碼層級看起來也不那麼簡單,也是比較常用到的

3.第三個–快速排序
顧名思義,那就是快唄,選定一個元素,把比他小的放左邊,比他大的扔在右邊,循環遍歷

/**
     * 快速排序
     * 在快排中要設定分水嶺 就是隨機一個元素  然後比他小的放置到其左邊 比其大的在有邊 循環往復
     */
    public static int[] quick(int[] array) {
        int length = array.length - 1;
        sortQuick(array, 0, length);
        return array;
    }

    private static void sortQuick(int[] array, int low, int length) {
        if (low < length) {
            int div = firstRun(array, low, length);
            sortQuick(array, 0, div - 1);
            sortQuick(array, div + 1, length);
        }
    }

    private static int firstRun(int[] array, int low, int length) {
        int base = array[low];
        while (low < length) {
            while (array[length] > base) {
                length--;
            }
            swrap(array, low, length);
            while (array[low] < base) {
                low++;
            }
            swrap(array, low, length);
        }
        return low;
    }

    private static void swrap(int[] array, int low, int length) {
        int temp = array[length];
        array[length] = array[low];
        array[low] = temp;
        //return array;
    }

還有很多種排序算法,後續再補上吧

接下來說一下,有很多同學問我,在Android studio的Android項目中,怎麼運行java的main方法呢
先貼上代碼

private static int[] a = new int[]{1,2,345,98,209,1000,24,26789};

    public static void main(String[] args) {
//        select(a);
        insert(a);
//        quick(a);
        System.out.println("OK");
    }

    /**選擇排序
     *遍歷數組  然後每次遍歷到一個元素之後  繼續遍歷該元素之後的所有元素 然後找到最小的元素 和其換位置
     */
    public static int[] select(int[] array){
        for (int i = 0; i < array.length; i++) {
            int minPos = i;
            for (int j = i + 1; j < array.length; j++) {
                if (array[j] < array[minPos]){
                    minPos = j;
                }
            }
            if (array[i] > array[minPos]) {
                int temp = array[i];
                array[i] = array[minPos];
                array[minPos] = temp;
            }
        }
        return array;
    }

    /**插入排序
     *相當於  從0開始一直++  然後一直排列索引跟之前的元素
     */
    public static int[] insert(int[] array) {
        for (int i = 1; i < array.length; i++) {
            int temp = array[i];
            for (int j = i - 1; j >= 0 ; j--) {
                if (array[j] > temp ) {
                    array[j + 1] = array[j];
                    array[j] = temp;
                }
            }
        }
        return array;
    }

    /**
     * 快速排序
     * 在快排中要設定分水嶺 就是隨機一個元素  然後比他小的放置到其左邊 比其大的在有邊 循環往復
     */
    public static int[] quick(int[] array) {
        int length = array.length - 1;
        sortQuick(array, 0, length);
        return array;
    }

    private static void sortQuick(int[] array, int low, int length) {
        if (low < length) {
            int div = firstRun(array, low, length);
            sortQuick(array, 0, div - 1);
            sortQuick(array, div + 1, length);
        }
    }

    private static int firstRun(int[] array, int low, int length) {
        int base = array[low];
        while (low < length) {
            while (array[length] > base) {
                length--;
            }
            swrap(array, low, length);
            while (array[low] < base) {
                low++;
            }
            swrap(array, low, length);
        }
        return low;
    }

    private static void swrap(int[] array, int low, int length) {
        int temp = array[length];
        array[length] = array[low];
        array[low] = temp;
        //return array;
    }

我們可以看到main方法,那麼怎麼運行呢
在這裏插入圖片描述

很簡單了吧,run就是正常運行,debug自然就是可以斷點調試了,有不懂的可以私信我

有什麼需要講解的,歡迎私信留言,我會竭盡全力解決,畢竟我也是個菜鳥,哈哈😁

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章