赞
踩
一维数组
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();
}
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();
}
求和
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];
}
打乱数组,生成随机数以达成随机打乱
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;
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);
线性查找–数组可以有序也可以无序
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;
}
选择排序
在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;
}
}
}
Ⅰ.排序
- 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 = {3,2,1,5,4};
System.out.print(arr);
直接将数组打印输出
输出:[I@7852e922 (数组的地址)
String str = Arrays.toString(arr);
System.out.print(str);
Arrays类的toString()方法能将数组中的内容全部打印出来
输出:[3, 2, 1, 5, 4]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。