美文网首页
常见的几种排序方法实现

常见的几种排序方法实现

作者: 花花是男神 | 来源:发表于2018-11-19 19:12 被阅读0次

常见的几种排序方法:冒泡排序、选择排序、插入排序、选择排序
1、冒泡排序:每次比较相邻的像个数,值小的往前冒泡,时间复杂度O(n2)
2、选择排序:每次选择最小的一个数放在前面,时间复杂度O(n2)
3、插入排序:每个数插入前面的有序数列中,时间复杂度O(n2)
4、选择排序:利用递归方法,不断将小于某个数的数字放左边,大于这个数的放右边O(N*logN)

代码如下:

public class test {

    public static void main(String[] args) {
        int[] num = new int[]{9, 3, 1, 5, 7, 2, 4, 8, 6, 10,14,11,12};
//        maoPao(num);
//        select(num);
//        insert(num);
        quick(num, 0, num.length-1);

        for (int i = 0; i < num.length - 1; i++) {
            System.out.printf(num[i] + "");
        }

    }


    /**
     * 冒泡排序
     *
     * @param num
     * @return
     */
    private static int[] maoPao(int[] num) {
        if (num == null || num.length <= 0) {
            return null;
        }

        if (num.length == 1) {
            return num;
        }

        int temp;
        boolean flag = true; // 标志位  有改动
        for (int i = 0; i < num.length - 1; i++) {
            flag = true;
            //从最后一个开始向前冒泡
            for (int j = num.length - 1; j > 0; j--) {
                if (num[j] < num[j - 1]) {
                    //大的排后 小的向前冒泡
                    temp = num[j];
                    num[j] = num[j - 1];
                    num[j - 1] = temp;
                    flag = false;
                }
            }

            if (flag) {
                //一个循环都没有冒泡行为则已排好序,无需再循环
                return num;
            }
        }
        return num;
    }

    /**
     * 选择排序
     *
     * @param num
     */
    private static void select(int num[]) {
        if (!check(num))
            return;

        int currentIndex = 0;
        int temp;
        for (int i = 0; i < num.length - 1; i++) {

            currentIndex = i;
            //每次循环选择最小数的位置下标
            for (int j = i; j < num.length - 1; j++) {
                if (num[j] < num[currentIndex]) {
                    currentIndex = j;
                }
            }
            //如果有最小的则替换
            if (currentIndex != i) {
                temp = num[i];
                num[i] = num[currentIndex];
                num[currentIndex] = temp;
            }
        }
    }

    /**
     * 插入查询
     *
     * @param num
     */
    private static void insert(int[] num) {
        if (!check(num)) {
            return;
        }

        int temp;
        for (int i = 0; i < num.length - 1; i++) {
            for (int j = i + 1; j > 0; j--) {
                if (num[j] < num[j - 1]) {
                    temp = num[j - 1];
                    num[j - 1] = num[j];
                    num[j] = temp;
                } else {
                    break;
                }
            }
        }
    }

    /**
     * 快速排序
     *
     * @param num
     */
    private static void quick(int[] num, int l, int r) {
        if (!check(num) || l >= r)
            return;

        int i = l;
        int j = r;
        int key = num[l];


        while (i < j) {
            //大的放右边
            while (i < j && num[j] >= key) {
                j--;
            }

            if (i < j) {
                num[i] = num[j];
                i++;
            }

            //小的放左边
            while (i < j && num[i] < key) {
                i++;
            }

            if (i < j) {
                num[j] = num[i];
                j--;
            }
        }
        num[i] = key;
        quick(num, l, i - 1);
        quick(num, i + 1, r);
    }

    private static boolean check(int num[]) {
        if (num == null || num.length <= 0) {
            return false;
        }

        if (num.length == 1) {
            return false;
        }
        return true;
    }
}

相关文章

  • 实现几种常见排序方法

    Java实现几种常见排序方法 日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还...

  • 常见的几种排序方法实现

    常见的几种排序方法:冒泡排序、选择排序、插入排序、选择排序1、冒泡排序:每次比较相邻的像个数,值小的往前冒泡,时间...

  • 冒泡排序算法(C语言)

    排序(冒泡排序算法) 本专题将总结数据结构中几种常见的基本排序方法(后续的几种排序方法将会在整理后发布),意图将计...

  • Java实现几种常见排序方法

    日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序...

  • php实现几种常见的排序方法

    1. 冒泡排序法: 2. 选择排序法: 3.插入排序法: 4.快速排序法:

  • 插入排序

    插入排序也是一类非常常见的排序方法,它主要包含直接插入、折半插入和Shell排序等几种常见排序方法。 直接插入排序...

  • 几种常见的排序方法

    1、冒泡排序法冒泡排序法的思想是将相邻的两个数进行比较,最终的目的是将数组中的最大/最小数放到最后一位,然后以此类...

  • 常见的几种排序方法

    大家好,我是IT修真院武汉分院第八期的学员庄引,一枚正直纯洁善良的WEB前端程序员。 今天给大家分享一下,修真院官...

  • 常见的几种排序方法

    大家好,我是IT修真院武汉分院第八期的学员庄引,一枚正直纯洁善良的WEB前端程序员。今天给大家分享一下,修真院官网...

  • 常见的几种排序方法

    大家好,我是IT修真院深圳分院第02期学员,一枚正直善良的web程序员。 今天给大家分享一下,修真院官网js任务,...

网友评论

      本文标题:常见的几种排序方法实现

      本文链接:https://www.haomeiwen.com/subject/vvgafqtx.html