`
Luob.
  • 浏览: 1588730 次
  • 来自: 上海
社区版块
存档分类
最新评论

数组的复制,插入,合并

    博客分类:
  • Java
阅读更多
数据的复制,插入,合并


package com.itheima.arrs;

import java.util.Arrays;
import java.util.Scanner;

/***
 * 对数组元素执行各种操作的类
 * @author Bin
 *
 */
public class TestOperatorArry {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		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();
	}
	//数组复制
	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);
		
		 System.out.println("使用 System.arraycopy方法复制的结果\n"+Arrays.toString(temp1));
		 
		 temp2=array;
		 System.out.println("使用 赋值元算符号=方法复制的结果\n"+Arrays.toString(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 < num.length; i++) {
			if(num[i]==0)
				System.out.print("存数空间");
			else
				System.out.print(num[i]+"\t");
		}
		
		System.out.println();
		System.out.println("输入一个要插入的数");
		Scanner san=new  Scanner(System.in);
		int in=san.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]+"\t");
		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++)
			System.out.print(a[i]+"\t");
		System.out.println();
		for (i = 0; i < blen; i++)
			System.out.print(b[i]+"\t");
		
		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 < c.length; k++)
			System.out.print(c[k]+"\t");
		System.out.println();
		return c;
		
	}

}

0
0
分享到:
评论

相关推荐

    Java数组+数组排序+数组复制+最大最小值+合并数组+数组升降序排序+数组查找

    Java数组: Java数组排序:冒泡排序、选择排序 、插入排序 、快速排序、希尔排序...三种Java数组复制方法 Java数组最大最小值 四种合并Java数组方法 Java数组升降序排序 Java数组查找:二分查找、顺序查找、插值查找法

    将两数组合并成一个数组并排序

    数组的合并与排序是常见的操作,尤其是在处理大量数据时。在这个场景中,我们要讨论如何在C语言中将两个已排序的数组合并成一个新的排序数组。 首先,让我们了解数组的基本概念。数组是由相同类型元素构成的集合,...

    高效合并两个有序数组.py

    循环内部的判断是根据两个数组当前末尾元素的大小来决定将哪个元素插入到nums1的末尾。如果nums1[m-1]大于nums2[n-1],则从nums1中移除并替换,否则从nums2中移除。这样保证了每次合并都是按升序进行的。最后,如果...

    C语言实现在数组A上有序合并数组B的方法

    在C语言中,有序合并两个数组是常见的数据操作任务,特别是对于排序算法的理解和实现有着重要意义。本节我们将详细探讨如何在数组A上有序合并数组B,以及如何通过代码实现和测试来确保其正确性。 首先,我们面临的...

    一种快速的排序法—插入合并排序法

    ### 一种快速的排序法—插入合并排序法 #### 概述 在计算机科学领域,排序算法是一项基础且重要的技术,广泛应用于数据管理和处理过程之中。根据数据存储位置的不同,排序算法可以分为内排序和外排序两大类。本文...

    Java 实例 - 往数组中添加元素源代码-详细教程.zip

    六、数组复制与合并 Java提供了System.arraycopy()方法用于复制数组,Arrays类中的copyOf()和copyOfRange()方法则可以用来创建数组副本或部分数组副本。合并两个数组可以创建新数组,并逐个复制元素。 七、源代码...

    C++实现两个有序数组的合并

    给定两个已排序的数组A1和A2,我们需要将A2中的元素插入到A1的末尾,同时保持整个结果数组是有序的。为了提高效率,我们可以采用从后往前的策略进行合并,这是因为这种策略可以避免不必要的元素移动。 以下是实现这...

    cpp代码-(数组)将两个升序数组合并为一个升序数组

    C++中,可以使用迭代器或指针来遍历数组,并通过比较和插入操作来实现合并。以下是一个简单的实现方式: ```cpp #include using namespace std; void mergeSortedArrays(int arr1[], int m, int arr2[], int n) {...

    使用不同的方法结合/合并两个JS数组

    因此,所有这些方法都面临同样的潜在问题:当数组过大时,可能会遇到内存限制,因为元素需要被复制到堆栈中。某些JavaScript引擎可能还有对数组长度的限制,超过这个限制可能会导致错误。 在实际开发中,应根据具体...

    java-leetcode题解之第88题合并两个有序数组.zip

    你需要了解如何创建、遍历、修改数组,以及如何将一个数组的元素复制到另一个数组。 4. **条件语句**:在实现解决方案的过程中,会用到if-else语句进行元素大小的比较和指针的移动。 5. **边界条件**:需要考虑当...

    合并排序与插入排序C语言代码

    重复此过程直到一个子数组为空,然后将另一个子数组的所有元素复制到新数组中。 C语言实现合并排序的代码框架如下: ```c void mergeSort(int arr[], int left, int right) { if (left ) { int mid = left + ...

    java实例-数组(学习资料)

    这里使用了一个新的临时数组`destination[]`,长度比原数组多一个,然后将原数组的元素复制到新数组中,最后在指定位置插入新元素,然后返回新数组。 除此之外,我们还可以看到其他与数组相关的操作,如获取数组...

    C++_MFC_类数组

    `CArray`类还提供了许多其他功能,如复制数组、合并数组、查找特定元素等。它的内部实现采用了动态内存管理,因此在使用过程中需要注意内存泄漏问题,确保正确地使用`Add()`、`InsertAt()`和`RemoveAt()`等函数。 ...

    数组类模版及调用 arraylist

    2. 插入和删除元素:提供在指定位置插入和删除元素的方法。 3. 访问元素:通过下标运算符`[]`提供访问元素的能力。 4. 大小调整:增加或减少数组容量。 5. 其他操作:如排序、查找、复制等。 二、ArrayList与Array...

    合并排序的c++实现程序

    这个函数通常通过两个指针分别遍历两个子数组,比较它们的元素并选择较小的插入到新数组中。 ```cpp void merge(int arr[], int l, int m, int r) { int i, j, k; int n1 = m - l + 1; int n2 = r - m; // ...

    C++动态数组

    例如,如果当前数组大小为N,当需要添加第N+1个元素时,可以重新分配大小为2N的新数组,然后将旧数组的所有元素复制到新数组中。 在压缩包中的"1.2-DArray_Max(Sample)"文件可能是一个示例程序,展示了如何实现这些...

    第2章 分治策略2合并排序(MIT课件)

    在本章中,我们主要讨论了如何利用合并排序算法来对一个包含n个元素的数组进行升序排列。 首先,插入排序(InsertionSort)被提及作为对比,它的效率较低,最坏情况下需要执行的时间复杂度为Θ(n^2),而最好的情况...

    JAVA开发实战经典_课后习题讲解-第4章:数组习题讲解.rar

    5. **数组操作**:包括复制数组、合并数组、反转数组等,熟悉Java提供的Arrays类中的方法。 6. **异常处理**:当尝试访问超出数组范围的索引时,会抛出ArrayIndexOutOfBoundsException,学习如何捕获和处理这种异常...

    归并排序算法实现

    - 在合并过程中,如果发现一个子数组为空,可以避免不必要的比较和复制,直接将另一个子数组复制过来。 6. **应用场景**: - 归并排序适用于大型数据集,如数据库和大规模数据分析。由于其稳定性和效率,常被用于...

    数据结构的合并排序算法

    然而,由于需要额外的空间来存储辅助数组,它在空间需求上比原地排序算法如快速排序或插入排序要高。在实际应用中,如果内存不是主要限制因素,而排序速度和稳定性更为关键,合并排序是一个理想的选择。

Global site tag (gtag.js) - Google Analytics