数组练习
1.遍历数组元素
1>数组的最小索引是0;最大索引是数组.length-1
举例1
class H
{
public static void main(String[] args)
{
int[] arr={1,4,6,7,8,9}; //使用静态初始化声明数组。
printArry(arr); //传递数组引用
}
public static void printArry(int[] arr) //接收整形数组引用
{ System.out.print("[");
for(int i=0;i<arr.length;i++) //循环输出
{
if(i!=arr.length-1)
{
System.out.print(arr[i]+",");
}
else
{
System.out.println(arr[i]+"]");
}
}
}
}
2.输出数组中元素的最大值和最小值
class ArrayDemo1
{
public static int getMax(int[] arr)
{
int max = arr[0];
for(int x=1;x<arr.length;x++)
{
if(arr[x]>max)
{
max=arr[x];
}
}
return max;
}
public static int getMin(int[] arr)
{
int min = arr[0];
for (int x=1;x<arr.length;x++)
{
if (arr[x]<min)
{
min=arr[x];
}
}
return min;
}
public static void main(String[] args)
{
int[] arr={4,8,9,2,4,1};
int max= getMax(arr);
int min=getMin(arr);
System.out.print("最大值"+max);
System.out.print("最小值"+min);
}
}
3.数组的排序
1.选择排序
class F
{
public static void selectSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=x+1;y<arr.length;y++)
{
if(arr[x]>arr[y])
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
public static void printArr(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]);
}
System.out.println("]");
}
public static void main(String[] args)
{
int [] arr={3,8,9,2,6,4};
printArr(arr);
selectSort(arr);
printArr(arr);
}
}
2.冒泡排序
class F
{
public static void bubbleSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=0;y<arr.length-x-1;y++)// -x就是让每一次比较的元素减少;-1就是防止角标越界。
{
if(arr[y]>arr[y+1])
{
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}
}
public static void printArr(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]);
}
System.out.println("]");
}
public static void main(String[] args)
{
int [] arr={3,8,9,2,6,4};
printArr(arr);
bubbleSort(arr);
printArr(arr);
}
}
3.快速排序
最好面试的时候不要用,在实际开发中常用
import java.util.*;
class ArrayDemo
{
public static void main(String[] args)
{
int[] arr ={4,2,3,1};
printArr(arr);
Arrays.sort(arr);//快速调用方法
printArr(arr);
}
public static void printArr(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]);
}
System.out.println("]");
}
}
4.排序-位置置换功能抽取
import java.util.*;
class F
{
public static void bubbleSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=0;y<arr.length-x-1;y++)
{
if(arr[y]>arr[y+1])
{
swap(arr,x,y);
}
}
}
}
public static void printArr(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]);
}
System.out.println("]");
}
//*
发现,频繁写换位的代码,很痛苦
为了提高代码的重复使用效率,换位这个部分,单独提取
形成函数,需要换位的时候,调用换位这个函数就可以了
*/
public static void swap(int[] arr,int a,int b)/
{
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
public static void main(String[] args)
{
int [] arr={3,8,9,2,6,4};
printArr(arr);
Arrays.sort(arr);
printArr(arr);
}
}
5.数组的折半查找
折半查找,提高效率,但是必须保证该数组是个有序数组。
class T
{
public static void main(String[] args)
{
int [] arr={1,3,6,8,34};
int index =halfSeach(arr,6);
System.out.print("index="+index);
}
public static int halfSeach(int[]arr,int key)
{
int min,max,mid;
min=0;
max=arr.length-1;
mid=(min+max)/2;
while(min<=max)
{
mid=(min+max)/2;
if(key>arr[mid])
{
min=mid+1;
}
else if (key<arr[mid])
{
min=mid-1;
}
else
{
return mid;
}
}
return -1;
}
//定义功能,获取Key第一次出现在数组中的位置,如果返回值是-1,那么Key在数组中不存在。
public static int getIndex(int[] arr,int key)
{
for(int x=0;x<arr.length;x++)
{
if(arr[x]==key)
{
return x;
}
}
return -1;
}
}