Java数组常见操作---初学者

1. 输入

一维数组

		Scanner input=new Scanner(System.in);
		int[] a=new int[5];
		for(int i=0;i<a.length;i++) {
			a[i]=input.nextInt();
		}

二维数组

		Scanner input=new Scanner(System.in);
		int[][] a=new int[5][5];
		for(int i=0;i<a.length;i++) {
			for(int j=0;j<a.length;j++)
				a[i][j]=input.nextInt();
		}

2.输出

		for(int i=0;i<a.length;i++) {
			System.out.println(a[i]);
		}
		或者
		System.out.println(Arrays.toString(a));

对于char类型的数组,可以直接使用一条语句打印⭐

		char[] c= {'J','A','V','A'};
		System.out.println(c);
		//输出Java

二维数组

		for(int i=0;i<a.length;i++) {
			for(int j=0;j<a[i].length;j++) {
				System.out.print(a[i][j]+" ");
			}
			System.out.println();
		}

3.求和 & 最大值

求和

		int sum=0;
		for(int i=0;i<a.length;i++) {
			sum+=a[i];
		}

最大值

		for(int i=0;i<a.length;i++) {
			if(a[i]>max)
				max=a[i];
		}

4.打乱和移动数组

打乱数组,生成随机数以达成随机打乱

		for(int i=0;i<a.length;i++) {
			int j=(int)(Math.random()*a.length); //[ 0 , a.length ) 
			int t=a[i];
			a[i]=a[j];
			a[j]=t;
		}

向左移动一格 , [1,2,3,4,5]—>[2, 3, 4, 5, 1]

		int t=a[0];
		for(int i=1;i<a.length;i++) {
			a[i-1]=a[i];
		}
		a[a.length-1]=t;

向右移动一格,[1,2,3,4,5]—>[5, 1, 2, 3, 4]

		int t=a[a.length-1];
		for(int i=a.length-2;i>=0;i--) {
			a[i+1]=a[i];
		}
		a[0]=t;

5.赋值数组

arr1=arr2;

----这只是将arr2的地址复制给了arr1,arr1原先所引用的数组就不能用了,会被JVM自动回收(垃圾回收)

a.使用循环一个一个的赋值

		int[] a= {1,2,3,4,5};
		int[] b=new int[a.length];
		for(int i=0;i<a.length;i++)
			b[i]=a[i];

b.使用System类的arraycopy()方法
arraycopy(源数组,起始位置,目标数组,起始位置,长度);

		System.arraycopy(a, 0, b, 0, 5);

6.数组查找

线性查找–数组可以有序也可以无序

		public static int seqSearch(int[] a,int value) {
		for(int i=0;i<a.length;i++) {
			if(a[i]==value)
				return i;
		}
		return -1;
	}

二分法查找–数组必须升序排序好

① 首先确定整个查找区间的中间位置 mid = ( left + right )/ 2
② 用待查关键字值与中间位置的关键字值进行比较;
若相等,则查找成功
若大于,则在后(右)半个区域继续进行折半查找
若小于,则在前(左)半个区域继续进行折半查找
③ 对确定的缩小区域再按折半公式,重复上述步骤。

	public static int binarySearch(int[] a,int value) {
		int low=0;
		int high=a.length-1;
		while(low<=high) {
			int mid=(low+high)/2;  //中间元素的下标
			if(a[mid]==value)
				return mid;
			else if(a[mid]>value)
				high=mid-1;
			else
				low=mid+1;
		}
		return -1;
	}

7.数组排序

选择排序
在arr[0]到arr[n-1]中选出最小(大)的的数与arr[0]交换位置,
在arr[1]到arr[n-1]中选出最小(大)的的数与arr[1]交换位置,
在arr[2]到arr[n-1]中选出最小(大)的的数与arr[2]交换位置,

		for(int i=0;i<a.length-1;i++) {
			int min=i;
			for(int j=i+1;j<a.length;j++) {
				if(a[j]<a[min]) {
					min=j;
				}
			}
			if(min!=i) {
				int t=a[i];
				a[i]=a[min];
				a[min]=t;
			}
		}

冒泡排序
比较相邻的元素,如果第一个比第二个大,就交换他们两个,重复执行

		for(int i=0;i<a.length;i++) {
			for(int j=0;j<a.length-i-1;j++) {
				if(a[j]>a[j+1]) {
					int t=a[j];
					a[j]=a[j+1];
					a[j+1]=t;
				}
			}
		}

8.java.util.Arrays

Ⅰ.排序

 - Arrays.sort(list)

Arrays.sort(list);–对一个数组排序,从小到大,可以对数值型或字符型数组进行排序,除了boolean类型

 - Arrays.sort(list,0,4)

Arrays.sort(list,0,4)-----指定范围的排序,对0到3下标排序,[0,4)
Ⅱ.二分查找

- Arrays.binarySearch(list,11)

Arrays.binarySearch(list,11);—必须提前升序排好
Ⅲ.比较数组元素是否相等

 - Arrays.equals(list1,list2)

Arrays.equals(list1,list2);-----true/false
Ⅳ.填充数组

 - Arrays.fill(arr,4)

Arrays.fill(arr,4);------给所有值赋值4,[4, 4, 4, 4, 4]

 - Arrays.fill(arr, 2,4,6)

Arrays.fill(arr, 2,4,6);----[2,4)(不包括4)
[0, 0, 6, 6, 0]
Ⅴ.快速显示数组

 int[] arr = {32154};
 System.out.print(arr);

直接将数组打印输出
输出:[I@7852e922 (数组的地址)

String str = Arrays.toString(arr); 
System.out.print(str);

Arrays类的toString()方法能将数组中的内容全部打印出来
输出:[3, 2, 1, 5, 4]

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值