• 合并两个数组


    【题目】有两个排序的数组A1和A2,内存在A1的末尾有足够的空余空间容纳A2。请实现一个函数,把A2中所有数字插入到A1中,并且所有的数字是排序的。

    1. 从后往前比较A1和A2中的数字,并把较大的数字复制到A1的合适位置。

     1 public class Main {
     2 
     3     public static void main(String[] args) {
     4 
     5         int[] arr1 = new int[100];
     6         arr1[0] = 1;
     7         arr1[1] = 3;
     8         arr1[2] = 4;
     9         arr1[3] = 7;
    10         arr1[4] = 9;
    11         arr1[5] = 10;
    12         arr1[6] = 23;
    13         arr1[7] = 67;
    14         int[] arr2 = { 4, 6, 8, 10, 22, 24, 26, 34, 37 };
    15 
    16         Main main = new Main();
    17         int[] result = main.process(arr1, arr2);
    18 
    19         if (null != result) {
    20             for (int i = 0; i < (8 + arr2.length); i++) {
    21                 System.out.print(result[i] + " ");
    22             }
    23         }
    24     }
    25 
    26     public int[] process(int[] arr1, int[] arr2) {
    27 
    28         if (null == arr1 || null == arr2
    29                 || (0 == arr1.length && 0 == arr2.length)) {
    30             return null;
    31         }
    32 
    33         if (0 == arr1.length && 0 != arr2.length) {
    34             return arr2;
    35         }
    36 
    37         if (0 != arr1.length && 0 == arr2.length) {
    38             return arr1;
    39         }
    40 
    41         // 求arr1中非0的元素个数
    42         int index = 0;
    43         for (int i = 0; i < arr1.length; i++) {
    44             if (0 == arr1[i]) {
    45                 index = i;
    46                 break;
    47             }
    48         }
    49 
    50         int p1 = index - 1; // arr1末尾指针
    51         int p2 = arr2.length - 1; // arr2末尾指针
    52         int p = index + arr2.length - 1; // arr3末尾指针
    53 
    54         // 从后往前遍历arr1和arr2中的元素,并从后往前赋值到arr1中
    55         while (p1 >= 0 && p2 >= 0) {
    56             if (arr1[p1] >= arr2[p2]) {
    57                 arr1[p--] = arr1[p1--];
    58             } else {
    59                 arr1[p--] = arr2[p2--];
    60             }
    61         }
    62 
    63         while (p1 >= 0) {
    64             arr1[p--] = arr1[p1--];
    65         }
    66 
    67         while (p2 >= 0) {
    68             arr1[p--] = arr2[p2--];
    69         }
    70 
    71         return arr1;
    72     }
    73 }
  • 相关阅读:
    图像处理国际会议
    [2015更新]用Word2007写CSDN博客
    【超详细教程】使用Windows Live Writer 2012和Office Word 2013 发布文章到博客园全面总结
    奇异秀App:奇异秀秀奇异,用大头视频来拜年
    通俗讲解傅里叶级数
    LIBSVM的使用方法
    VC6.0的工程设置解读Project--Settings
    HOG:从理论到OpenCV实践
    如何在 Kaggle 首战中进入前 10%
    linux学习(2)
  • 原文地址:https://www.cnblogs.com/jiangyi-uestc/p/7955358.html
Copyright © 2020-2023  润新知