一、数组定义
同一种类型数据的集合,其实数组就是一个容器
数组定义格式:
1.数据类型[] 变量名 = new 数据类型[数组长度]
2.数据类型[] 数组名 = new 数据类型[]{元素,元素,.....};
二、数组遍历
同一种类型数据的集合,其实数组就是一个容器
数组定义格式:
1.数据类型[] 变量名 = new 数据类型[数组长度]
int[] arr = new int[5];
int[] arr = new int[]{3,5,4,9};
int[] arr = {3,5,8,9};
int[] arr = new int[3];
for(int i=0;i<arr.length;i++)
{
System.out.println(arr[i]);
}
获取最值(最大值、最小值)
int[] arr=new int[5];
int temp=arr[0];
for(int i=1;i<arr.length;i++)
{
if(temp<arr[i])
{
temp = arr[i];
}
}
三、数组排序(Arrays.Sort(arr))
常见的排序方式:选择排序和冒泡排序
①、选择排序
最值出现在第一位
常见的排序方式:选择排序和冒泡排序
①、选择排序
最值出现在第一位

代码:
for(int i=0;i<arr.length-1;i++)
{
for(int j=i+1;j<arr.length;j++)
{
if(arr[i]>arr[j])
{
int temp =arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
②、冒泡排序
最值出现在最后位置
最值出现在最后位置
代码:
for(int i=0;i<arr.length-1;i++)
{
for(int j=0;j<arr.length-i-1;j++)
{
if(arr[j]<arr[j+1])
{
int temp =arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
外循环为行数
四、数组查找
折半查找,必须操作有序数组
public static int halfSearch(int[] arr,int key)
{
int min=0;
int max=arr.length-1;
int mid=(min+max)/2;
while(arr[mid]!=key)
{
if(min>max)
{
return -1;
}
if(arr[mid]<key)
{
min=mid+1;
}else if(arr[mid]>key)
{
max=mid-1;
}
mid=(min+max)/2;
}
}
第二种写法
public static int halfSearch2(int[] arr,int key)
{
int min=0;
int max=arr.length-1;
int mid;
while(min<=max)
{
mid=(min+max)>>1;
if(arr[mid]<key)
{
min=mid+1;
}else if(arr[mid]>key)
{
max=mid-1;
}else
{
return mid;
}
}
return -1;
}
折半查找实例:在一个有些数组中插入一个数,并保证数组还是有序数组
1 public static void main(String[] args) 2 { 3 int[] arr=new int[]{2,6,9,10,15,24,29,34,46}; 4 //通过折半查找要插入的元素在数组中的位置 5 //如果存在这个元素的话就在这个元素所在数组位置插入 6 //如果不存在这个元素的话就返回最小索引的值 7 int key =11; 8 int index=halfSearch(arr,11); 9 10 int[] arrTemp=new int[arr.length + 1]; 11 for(int i=0;i<arr.length-1;i++) 12 { 13 arrTemp[i]=arr[i]; 14 } 15 for(int i=arrTemp.length-1;i>=index;i--) 16 { 17 if(index==i) 18 arrTemp[i]=key; 19 else 20 arrTemp[i]=arrTemp[i-1]; 21 } 22 for(int i=0;i<arrTemp.length-1;i++) 23 { 24 System.out.println(arrTemp[i]); 25 } 26 27 } 28 public static int halfSearch(int[] arr,int key) 29 { 30 int min=0; 31 int max=arr.length-1; 32 int mid; 33 while(min<=max) 34 { 35 mid=(min+max)>>1; 36 if(arr[mid]<key) 37 { 38 min=mid+1; 39 }else if(arr[mid]>key) 40 { 41 max=mid-1; 42 }else 43 { 44 return mid; 45 } 46 } 47 return min; 48 }