/*数组*/
/*静态初始化*/
int[] arr=new int[]{1,3,6,8,10};//数据明确时,直接把数组列出来
int[] arr={1,2,,5,7,12};
int[] arr=new int[5]; //对于数值不明确的,可以用这种分别进行赋值。
arr[1]=20;
arr[3]=32;
arr[4]=33;
/*数组元素的默认初始化值为0*/
int[] arr=new int[5];
System.out.println(arr[1]);//值为0
/*二维数组*/
int[][] arr=new int[3][4] //表示的是二维数组中有3个一维数组,每个一维数组内有4个元素。一维数组的默认初始化值为null,元素默认初始化值为0
System.out.println(arr.length)//打印的是二维数组的长度
System.out.println(arr[].length)//打印的是第一个一维数组的长度
对传统型二维数组赋值的方法:
arr[0][0]=12;//给第一个一维数组当中的第一个数赋值为12;
int[][] arr={{},{},{},{}}//二维数组的要求是,每个一维数组中的元素的长度都相同
/*数组的遍历*/
class Q1
{
public static void main(String[] args)
{
int[] arr=new int[]{3,2,1,45,234,521};
printArray(arr);
}
public static void printArray(int[] arr)
{
System.out.print("[");
for (int x=0;x<arr.length ;x++ )
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.print(arr[x]+"]");
}
}
}
/*获取数组最值*/
class Q1
{
public static void main(String[] args)
{
int[] arr=new int[]{344,12,54,66,3,21,2};
getMin(arr);
}
public static void getMin(int[] arr)
{
for (int x=0;x<arr.length ;x++ )
{
if(arr[0]>arr[x])
{
arr[0]=arr[x];
}
}
System.out.println("数组中的最小值是:"+arr[0]); //获取数组最小值
}
}
class Q1
{
public static void main(String[] args)
{
int[] arr=new int[]{2,12,54,66,3,21,344};
getMax(arr);
}
public static void getMax(int[] arr)
{
for (int x=0;x<arr.length ;x++ )
{
if(arr[0]<arr[x])
{
arr[0]=arr[x];
}
}
System.out.println("数值中的最大值是:"+arr[0]); //获取数组最大值
}
}
/*数组排序*/
/*数组的选择排序*/
class Q1
{
public static void main(String[] args)
{
int[] arr=new int[]{1,22,34,12,3,76,356};
maxPrint(arr);
System.out.print("数组从大到小的排列是:");
printArray(arr);
System.out.println();
minPrint(arr);
System.out.print("数组从小到大的排列是:");
printArray(arr);
}
public static void minPrint(int[] arr)
{
int temp;
for (int x=0;x<arr.length-1 ;x++ )
{
for (int y=x+1;y<arr.length ;y++ )
{
if(arr[x]>arr[y])
{
temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
public static void maxPrint(int[] arr)
{
int temp;
for (int x=0;x<arr.length-1 ;x++ )
{
for (int y=x+1;y<arr.length ;y++ )
{
if(arr[x]<arr[y])
{
temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
public static void printArray(int[] arr)
{
System.out.print("[");
for (int x=0;x<arr.length ;x++ )
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.print(arr[x]+"]");
}
}
}
/*数组的冒泡排序*/
class Q1
{
public static void main(String[] args)
{
int[] arr=new int[]{1,22,34,12,3,76,356};
maoPao(arr);
System.out.print("数组从小到大的排列是:");
printArray(arr);
}
public static void maoPao(int[] arr)
{
for (int y=0;y<arr.length ;y++ )
{
for (int x=0;x<arr.length-y-1 ;x++ ) //目的就是减少需要比较的元素
{
int temp;
if(arr[x]>arr[x+1])
{
swap(arr,x,x+1);
}
}
}
}
public static void printArray(int[] arr)
{
System.out.print("[");
for (int x=0;x<arr.length ;x++ )
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.print(arr[x]+"]");
}
}
public static void swap(int[] arr,int x,int y) //数值置换功能
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
/*查找一个元素在数组中的位置*/
class Q1
{
public static void main(String[] args)
{
int[] arr=new int[]{1,22,34,12,3,76,356};
int k=getSearch(arr,34);
System.out.println(k);
}
public static int getSearch(int[] arr,int x) //用return的方法可以有效规避打印语句的繁琐
{
for (int y=0;y<arr.length ;y++ )
{
if(arr[y]==x)
{
return y;
}
}
return -1;
}
}
/*折半查找*/
class Q1
{
public static void main(String[] args)
{
int[] arr=new int[]{1,22,34,12,3,76,356};
minPrint(arr);
//printArray(arr);
int index=zheBan(arr,54);
System.out.println("角标是:"+index);
}
/*public static int zheBan(int[] arr,int key)
{
int min=0,max=arr.length-1,mid=(min+max)/2;
while(key!=arr[mid]) //是以中心数值为比较对象
{
if(key>arr[mid])
{
min=mid+1;
}
else if(key<arr[mid])
{
max=mid-1;
}
if(min>max)
{
return -1;
}
mid=(min+max)/2;
}
return mid;
}*/
//折半查找法二
public static int zheBan(int[] arr,int key)
{
int min=0,max=arr.length-1,mid=(min+max)>>1;
while(arr[min]<=arr[max]) //法二是以整体成立为变量
{
if(key>arr[mid])
{
min=mid+1;
}
else if(key<arr[mid])
{
max=mid-1;
}
else
return mid;
mid=(min+max)>>1; //起着循环的作用
}
return -1;
}
public static void minPrint(int[] arr)
{
int temp;
for (int x=0;x<arr.length-1 ;x++ )
{
for (int y=x+1;y<arr.length ;y++ )
{
if(arr[x]>arr[y])
{
temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
public static void printArray(int[] arr)
{
System.out.print("[");
for (int x=0;x<arr.length ;x++ )
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.print(arr[x]+"]");
}
}
}
/*有一个有序的数组,向其中加入一个数,使其加入了也是有序的*/
class Q1
{
public static void main(String[] args)
{
int[] arr=new int[]{1,22,34,43,44,56,111};
int a=getSearch(arr,24);
System.out.println("该数值应插入在角标为"+a+"和角标为"+(a+1)+"之间");
}
public static int getSearch(int[] arr,int x)
{
int y=0;
for (;y<arr.length-1 ;y++ )
{
if ((x<arr[y+1])&&(x>arr[y]))
{
return y;
}
}
return y;
}
}
/*二维数组面试题*/
一维数组的表达方式:int[] arr,int arr两种表达方式
二维数组的表达方式:int[][] arr,int arr[][],int [] arr[]三种表达方式
int[] x,y[] //拆开来看就是int[] x;int[] y[];
|
|