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

算法系列<归并排序>

时间:2018-10-11 21:52:39      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:排序   code   lse   时间   merge   有序   color   nlog   mergesort   

归并两个已排序的数组序列,归并之后的数组序列还是有序的

用java实现如下:

    /**
     * 归并排序:归并两个已排序(升序)的数组,归并之后是已排序的
     * 最好时间复杂度:O(N),最坏时间复杂度:O(NlogN),平均时间复杂度:O(NlogN),空间复杂度:O(N)
     * 测试case:
     * {},{}
     * {},{1,2,3}
     * {1,2,3},{}
     * {1,2,3},{4,5,6}
     * {4,5,6},{1,2,3}
     * {12,34,45},{3,8,96}
     * @param table1 已升序排序的数组1
     * @param table2 已升序排序的数组2
     * @return
     */

    public static int[] mergeSort(int[] table1,int[] table2){
        if(table1.length>0||table2.length>0) {
            int[] table = new int[table1.length + table2.length];
            for (int index = 0, i = 0, j = 0; index < table.length; index++) {
                if (i >= table1.length) {
                    table[index++] = table2[j++];
                } else if (j >= table2.length) {
                    table[index++] = table1[i++];
                } else if (table1[i] < table2[j]) {
                    table[index] = table1[i];
                    i++;
                } else {
                    table[index] = table2[j];
                    j++;

                }
            }
            return table;
        }else{
            return null;
        }
    }

 

算法系列<归并排序>

标签:排序   code   lse   时间   merge   有序   color   nlog   mergesort   

原文地址:https://www.cnblogs.com/zhaijing/p/9774688.html

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