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

概要:

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

| |目录

示例

package net.xsoftlab.baike;

import java.util.Scanner;

public class OperatorArray {
	public static void copy() {// 数组复制
		int array[] = new int[] { 1, 2, 3, 4 };// 声明数组并初始化
		int temp1[] = new int[array.length];// 声明数组,长度为array数组的长度
		int temp2[] = new int[array.length];
		System.arraycopy(array, 0, temp1, 0, array.length);// 将数组array复制给数组temp1
		System.out.println("复制后的数组结果:");
		for (int i = 0; i < temp1.length; i++)
			// 循环显示数组元素
			System.out.print(temp1[i] + "  ");
		System.out.println();
		temp2 = array;// 使用赋值将数组array复制给数组temp2
	}

	public static void insert() {// 数组插入
		int i, j;
		int n = 5;
		int num[] = new int[n + 1];
		for (i = 0; i < num.length - 1; i++) {
			num[i] = (i + 1) * 6;
		}
		int length = num.length;// 获得数组长度
		System.out.println("插入数字之前的数组为:");
		for (i = 0; i < length; 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 < length - 1; i++) {// 循环查找一个大于要插入数的位置
			if (num[i] > in)// 找到大于要插入的数就跳出
				break;
		}
		for (j = length - 1; j > i; j--) {// 为要插入的数留出位置
			num[j] = num[j - 1];
		}
		num[i] = in;// 将要插入的数保存到该位置
		for (i = 0; i < length; 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)
			// 将b数组从下标为j开始将值赋给c数组,放在c数组的alen+j,blen-j之间
			System.arraycopy(b, j, c, alen + j, blen - j);
		if (j == blen)
			// 将a数组从下标为i开始将值赋给c数组,放在c数组的blen+i,alen-i之间
			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) {// java程序的主入口处
		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();// 调用数组插入方法
	}
}


评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
  • 全部评论(0)
资料加载中...
已关注 , 取消