一位数组的应用,包括数组复制,数组局部复制,数组长度,数组排序,在数组里边查询某个值,在数组里边局部查询某个值:
talk is cheaper,show me the code:
package hdu;
import java.util.*;
import java.text.*;
public class learn {
//public static void main(String[] args) {
// TODO 自动生成的方法存根
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
int a[]=new int[11000];//创建数组a
int b[]=new int[11000];//创建数组b
while(cin.hasNext())
{
String ch[]=new String[]{"\t"};
int n=cin.nextInt();//输入测试数据的组数
for(int help=0;help<n;help++)
{
int m=cin.nextInt();//输入数组a的长度
for(int i=0;i<m;i++)
{
a[i]=cin.nextInt();
}
int c[]=Arrays.copyOfRange(a,0,m);//数组拷贝
Arrays.sort(c,0,m);//对c数组进行快速排序
System.out.print("数组c:");
for(int i=0;i<m;i++)//输出C数组
System.out.print(c[i]+"\t");
System.out.println();
b=Arrays.copyOfRange(a, 0, m-2);//拷贝数组前m-2个到b
System.out.print("b数组的长度为: ");
System.out.println(b.length);//输出b的长度
System.out.println("a数组 c数组");
for(int i=0;i<m;i++)//输出A数组与C数组
{
System.out.print(a[i]+"\t");
System.out.println(c[i]);
}
int num=Arrays.binarySearch(b, a[0]);//在b数组里边找等于a[0]的数,并返回数组下标
int cnt=Arrays.binarySearch(c,0,m-1,5);//在c数组前m-1个数里边找等于5的数,并返回下标
System.out.print("a[0]在b数组里边是第");
System.out.println(num);//输出num
System.out.print("5在c数组里边是第");
System.out.println(cnt);
System.out.println();
}
}
}
}
然后测试,输入:
5
7
4 8 5 6 3 2 9
表示5组测试数据,第一组测试数据里边a的长度为7,对数组a进行赋值:
输出得到:
对于查询函数Arrays.binarySearch(c,0,m-1,5),c表示在c数组里边进行查询,查询范围为0到m-1,查询内容为5,如果5不在数组c里边,则返回-1或者-(5可以在数组c里边排序后插入的位置):