一维数组复制、插入和合并

package com.arry;
  
import java.util.Scanner;
  
public class TextOperatorArray {
    /*
     * 数组复制
     */
    public static void copy(){
        int array[] = new int[]{1,2,3,4};
        int temp1[] = new int[array.length];
        int temp2[] = new int[array.length];
        System.arraycopy(array, 0, temp1, 0, array.length);
        System.out.println("复制后的数组结果:");
        for(int i=0;i<array.length;i++)
            System.out.print(temp1[i]+" ");
        System.out.println();
        temp2 = array;
    }
    /*
     * 数组插入
     */
    public static void insert(){
        int i,j;
        int n =5;
        int num[] = new int[n+1];
        for(i=0;i<num.length;i++){
            num[i] = (i+1)*6;
        }
        int lenght = num.length;        //获得数组长度
        System.out.println("输入数字之前的数组为:");
        for(i = 0;i<lenght;i++)          //循环显示数组元素
            if(num[i]==0)
                System.out.print("存数空间");
            else
                System.out.print(num[i]+" ");
        System.out.println();
        System.out.println("输入一个要输入的数:");
        Scanner scan = new Scanner(System.in);  //键盘输入一个数
        int in = scan.nextInt();
        for(i=0;i<lenght-1;i++){             //循环找一个大于要插入数的位置
            if(num[i]>in)                        //找到大于要插入数就跳出
                break;
        }
        for(j=lenght-1;j<i;j--){             //为要插入的数留位置
            num[j]=num[j-1];
        }
        num[i] = in;                            //把要插入的数保存到该位置  
        for(i=0;i<lenght;i++)                    //循环显示数组元素
            System.out.print(num[i]+" ");
        System.out.println();
    }
    /*
     * 数组合并并排序
     */
    public static int[] combine(int[] a,int[] b){
        int alen = a.length;        //获得传入数组长度
        int blen = b.length;
        int length = alen + blen;
        int i,j;
        System.out.println("合并之间的两个数组:");
        for(i = 0;i<alen;i++)        //循环a数组元素
            System.out.print(a[i]+" ");
        System.out.println();
        for(i = 0;i < blen;i++)      //循环b数组元素
            System.out.print(b[i]+" ");
        System.out.println();
        int[] c=new int[length];    //声明数组长度为传入两个数组长度之和
        for(i =0,j=0;i < alen && j < blen;){      //循环查看元素进行比较
            if(a[i]<b[j]){           //判断两个数组元素值的大小
                c[i+j] = a[i];
                i++;
            }else{
                c[i+j] = b[j];
                j++;
            }
        }
        if(i==alen)
            System.arraycopy(b, j, c, alen + j, blen - j);
        if(j==blen)
            System.arraycopy(a, i, c, blen+i, alen-i);
        System.out.println("合并并排序之后的新数组:");
        for(int k =0;k<a.length+b.length;k++)    //循环输出合并后的数组的元素
            System.out.print(c[k]+" ");
        System.out.println();
        return c;
          
    }
    public static void main(String[] args) {
        System.out.println("1.数组复制:");
        copy();
        int a[] = {1,2,3,12};
        int b[] = {5,6,7,8};
        System.out.println("2.数组合并:");
        int c[] = combine(a, b);
        System.out.println("3.数组插入");
        insert();
    }
      
}
0 条评论