当前位置:   article > 正文

Java数组常见操作---初学者_int a[] = new int[];scanner input = new scanner(sy

int a[] = new int[];scanner input = new scanner(system.in)

1. 输入

一维数组

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

二维数组

		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();
		}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.输出

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

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

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

二维数组

		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();
		}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.求和 & 最大值

求和

		int sum=0;
		for(int i=0;i<a.length;i++) {
			sum+=a[i];
		}
  • 1
  • 2
  • 3
  • 4

最大值

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

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
  • 6

向左移动一格 , [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

向右移动一格,[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;
  • 1
  • 2
  • 3
  • 4
  • 5

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];
  • 1
  • 2
  • 3
  • 4

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

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

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;
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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

① 首先确定整个查找区间的中间位置 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;
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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;
			}
		}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

		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;
				}
			}
		}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

8.java.util.Arrays

Ⅰ.排序

 - Arrays.sort(list)
  • 1

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

 - Arrays.sort(list,0,4)
  • 1

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

- Arrays.binarySearch(list,11)
  • 1

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

 - Arrays.equals(list1,list2)
  • 1

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

 - Arrays.fill(arr,4)
  • 1

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

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

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

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/207196
推荐阅读
相关标签
  

闽ICP备14008679号