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自然就是可以断点调试了,有不懂的可以私信我

有什么需要讲解的,欢迎私信留言,我会竭尽全力解决,毕竟我也是个菜鸟,哈哈😁

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