美文网首页
java算法_有序数组合并

java算法_有序数组合并

作者: 王康健_0124 | 来源:发表于2019-04-11 14:31 被阅读0次

    无序数组合并:

        public static void main(String[] args) {
            String[] str1 = {"1","2","3","7"};
            String[] str2 = {"4","5","6"};
            int str1Length = str1.length;
            int str2length = str2.length;
            str1 = Arrays.copyOf(str1, str1Length+str2length);//数组扩容
            System.arraycopy(str2, 0, str1, str1Length, str2length);
            System.out.println(Arrays.toString(str1));
        }
    

    有两个有序数组,合并成一个有序数组,例如:arr1={1,3,4,7} arr2={2,5,8} 合并后为 {1,2,3,4,5,7,8} ,要求时间复杂度最小

    有序数组合并:

       public static void main(String[] args) {
            int[] num1 = new int[]{1,3,4,7};
            int[] num2 = new int[]{2,5,8};
            int[] sum3 = new int[num1.length + num2.length];//定义一个新的数组,然后做对比后往新的数组中插入数据
            int a = 0, b = 0;
            for (int i = 0; i < sum3.length; i++) {//新数组for循环,次数等于数组长度
                if (a < num1.length && b < num2.length) {//if条件的含义:两个数组中数没有取完可以做对比
                    if (num1[a] > num2[b]) {//如果a下标比b下标的数组大,b放到新数组中,b+1
                        sum3[i] = num2[b];
                        b++;
                    } else {//反之,a下标数字比b小,a放到新数组中,a+1
                        sum3[i] = num1[a];
                        a++;
                    }
                } else if (a < num1.length) {//如果不满足a < num1.length && b < num2.length说明有一个数字取完了数字,b取完,可以直接a放入新数组
                    sum3[i] = num1[a];
                    a++;
                } else if (b < num2.length) {//a取完,可以直接b放入新数组
                    sum3[i] = num2[b];
                    b++;
                }
            }
            System.out.println(Arrays.toString(sum3));
        }
    

    相关文章

      网友评论

          本文标题:java算法_有序数组合并

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