一、遍历—— for循环
int arr[] ={5,6,9,48,7,35,2};
for(int i=0;i<arr.length;i++)
{
System.out.println(arr[i]);
}
二、获取数组中的最大值
<span style="color:#ff0000;">//方法一:求数组中元素最大值 交换元素</span>
public static int getArrayMax1(int[] x)
{
int max=x[0];
for(int i=1;i<x.length;i++)
{
if(x[i]>max)
max=x[i];
}
return max;
}
<span style="color:#ff0000;">//方法二:求数组中元素最大值 交换元素索引</span>
public static int getArrayMax2(int[] x)
{
int maxIndex=0;
for(int i=1;i<x.length;i++)
{
if(x[i]>x[maxIndex])
maxIndex=i;
}
return x[maxIndex];
}</span>
三、选择排序
<span style="color:#ff0000;">//选择排序的方式一</span>
public static void selectSort(int 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;
}
}
}
}
<span style="color:#ff0000;">//选择排序方法二(推荐使用)</span>
public static void selectSort1(int arr[])
{
for(int i=0;i<arr.length-1;i++)
{
int index=i;
for(int j=i+1;j<arr.length;j++)
{
if(arr[index] > arr[j])
{
index = j;
}
}
if(index != i)
{
int temp = arr[index];
arr[index] = arr[i];
arr[i] = temp;
}
}
}
四、冒泡排序
1、内层for循环中arr.length -1表示防止数组越界
2、内层for循环arr.length-i表示后边的额i元素已经确定,不用比较
<span style="color:#ff0000;">//冒泡排序方式一(面试使用)</span>
public static void boubleSort1(int arr[])
{
for(int i=0;i<arr.length-1;i++)
{
for(int j=0;j<arr.length -1 -i;j++)
{
if(arr[j] > arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
<span style="color:#ff0000;">//冒泡排序方式二</span>
public static void boubleSort2(int arr[])
{
for(int i=arr.length -1;i>0;i--)
{
for(int j=0;j<i;j++)
{
if(arr[j] > arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
五、二分查找
数组必须有序(从大到小或从小到大)
<span style="color:#ff0000;">//方法一</span>
public static int halfSearch(int[] arr,int num)
{
int min,max,mid;
min=0;
max=arr.length-1;
mid = (min+max)/2;
while(arr[mid]!=num) //如果num=mid,那么跳过循环,直接返回mid的下标即是所查数的下标
{
if(num>arr[mid])
min=mid+1; //最小值移动到中间值的右侧,即中间值加1
else if(num<arr[mid])
max=mid-1;
if(min>max)
return -1;
mid=(max+min)/2; //最大值移动到中间值的左侧,即中间值减1
}
return mid;
}
<span style="color:#ff0000;">//方法二</span>
public static int halfSearch1(int arr[],int num)
{
int min,max,mid;
min=0;
max=arr.length-1;
while(min<=max)
{
mid=(min+max)/2;
if(arr[mid]<num)
min=mid+1;
else if(arr[mid]>num)
max=mid-1;
else
return mid;
}
return -1;
}
/*
<span style="color:#ff0000;">面试题:给定一个有序的数组,如果往这个数组中存储一个元素,并保证这个数组是有序的,
那么这个元素的存储脚标如何获取</span>
*/
public static int halfInsert(int[] arr,int num)
{
int min,max,mid;
min=0;
max=arr.length-1;
mid = (min+max)/2;
while(arr[mid]!=num)
{
if(num>arr[mid])
min=mid+1; //最小值移动到中间值的右侧,即中间值加1
else if(num<arr[mid])
max=mid-1;
if(min>max)
<span style="color:#ff0000;">return min;</span> <span style="color:#ff0000;">//min>max表示num没有在数组中(与查找数据相似,把-1换成min即可)</span>
mid=(max+min)/2; //最大值移动到中间值的左侧,即中间值减1
}
return mid;
}