码迷,mamicode.com
首页 > 编程语言 > 详细

排序添加

时间:2021-03-31 11:43:47      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:for   做了   new   个数   一个   nlogn   插入排序   mamicode   排序   

技术图片

  • 插入排序
    最佳情况:T(n) = O(n)
    最坏情况:T(n) = O(n2)
    平均情况:T(n) = O(n2)
    public int[] insertionSort(int[] array) {
        if (array.length == 0) {
            return array;
        }
        int current;
        for (int i = 0; i < array.length - 1; i++) {
            current = array[i + 1];//从第二个元素开始,与之前的元素进行比较;之后的每个元素都做相同的操作
            int preIndex = i;//从当前元素开始比较
            while (preIndex >= 0 && current < array[preIndex]) {//如果当前元素比下一个元素大,就将当前元素移到下一位
                array[preIndex + 1] = array[preIndex];
                preIndex--;
            }
            array[preIndex + 1] = current;//前面做了--操作,避免越界-1以及补回多减掉的1,所以preIndex+1;把当前值的下一个赋到此处;如果current比它前面的所有值都大,位置就不变
        }
        return array;
    }
  • 归并排序
    最佳情况:T(n) = O(n)
    最差情况:T(n) = O(nlogn)
    平均情况:T(n) = O(nlogn)
    public int[] MergeSort(int[] array) {
        if (array.length < 2) return array;
        int mid = array.length / 2;//取中间索引
        int[] left = Arrays.copyOfRange(array, 0, mid);//将初始数组分为两个数组,第一次分解
        int[] right = Arrays.copyOfRange(array, mid, array.length);
        return merge(MergeSort(left), MergeSort(right));//递归分解,再合并;会一直分解到单个数为止,到那个时候,left的长度为0
    }

    public int[] merge(int[] left, int[] right) {
        int[] result = new int[left.length + right.length];
        for (int index = 0, i = 0, j = 0; index < result.length; index++) {
            if (i >= left.length) {//如果左边left数组的值已经遍历完,那么result数组剩下的位置用right数组剩下的值来填
                result[index] = right[j++];
            } else if (j >= right.length) {//同理,如果right数组已经遍历完,就直接把left数组剩下的值来填result剩下的位置
                result[index] = left[i++];
            } else if (left[i] > right[j]) {
                result[index] = right[j++];//如果前面的两个都没满足,就需要比较当前left数组和right数组的当前值,谁小就把谁填进result
            } else {
                result[index] = left[i++];
            }
        }
        return result;
    }

排序添加

标签:for   做了   new   个数   一个   nlogn   插入排序   mamicode   排序   

原文地址:https://www.cnblogs.com/shoan-kwichou/p/14594808.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!