------- android培训、java培训、期待与您交流! ----------
数组的常见操作:遍历,排序,查找
1 数组遍历:
用for循环遍历数组脚标,第一个为Array[0];数组长度为Array.length
int[] arr=new int[]{1,2,3,4,5};
int[] arr1=new int[]{7,8,9,10,11};
//输出数组arr的长度
System.out.println("arr.length="+arr.length);
//arr数组正序遍历
for(int x=0;x<arr.length;x++)
{
System.out.println("arr["+x+"]="+arr[x]);
}
System.out.println("==================================");
//输出数组arr1的长度
System.out.println("arr1.length="+arr.length);
//数组arr1的倒序遍历
for(int y=arr1.length-1;y>=0;y--)
{
System.out.println("arr1["+y+"]="+arr1[y]);
}
----------------------------------------------------------------------
2获取最值(getMax,getMin)
如getMax:
public int getMax(int arr[])
{
int max=arr[0];
for(int i=1;i<arr.length;i++)
{
if(arr[i]>max)
max=arr[i];
}
return max;
}
}
----------------------------------------------------------------------
3排序(选择排序,冒泡排序) 希尔排序最快,java中提供排序的方法
包:import java.util.*;
Arrays.sort(arr);//java提供排序方法。开始都用它。
//数组选择排序。
class Demo12
{
public static void main(String args[])
{
int[] arr1=new int[]{57,23,19,89,66,74};
Funcation a1=new Funcation();
a1.selectSort(arr1);
a1.printArray(int[] arr);
}
}
class Funcation
{
//遍历数组
public void printArray(int[] arr)
{
for(int i=0;i<arr.length;i++)
{
System.out.print("arr["+i+"]="+arr[i]+",");
if(i==arr.length-1)
System.out.println("arr["+i+"]="+arr[i]);
}
}
//选择排序
public 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 z=arr[i];
arr[i]=arr[j];
arr[j]=z;
}
}
}
}
}
//冒泡排序
class Demo13
{
public static void main(String args[])
{
int[] arr1=new int[]{57,23,19,89,66,74};
Funcation a1=new Funcation();
a1.bubbleSort(arr1);
a1.printArray(arr1);
}
}
class Funcation
{
//遍历数组
public void printArray(int[] arr)
{
for(int i=0;i<arr.length;i++)
{
System.out.print("arr["+i+"]="+arr[i]+",");
if(i==arr.length-1)
System.out.println("arr["+i+"]="+arr[i]);
}
}
//冒泡排序方法
public void bubbleSort(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;
}
}
}
/**
方法2:
for(int x=arr.length-1;x>0;x--)
{
for(int y=0;y<x;y++)
{
if(arr[y]>arr[y+1])
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
*/
}
}
----------------------------------------------------------------------
4折半查找(二分查找)
//查找数据是否存在,在什么位置
//注意:二分查找的前提条件是:要查的数组是有序的,不然就会出现错误。
class Demo14
{
public static void main(String args[])
{
int[] arr={9,14,24,38,44,77,90};
Funcation a1=new Funcation();
System.out.println(a1.binarySearch(arr,38));
}
}
class Funcation
{
//二分查找
public int binarySearch(int[] arr,int key)
{
int min,max,mid;
min=0;
max=arr.length-1;
//只要min和max之间有距离,就有多次折半可能,用while循环
while(min<=max)
{
//获取中间角标
mid=(max+min)/2;//等同于mid=(max+min)>>1;
//获取中间角标上的元素和key进行比较。
//来确定min和max的新值,或者叫确定新的查找范围
if(key>arr[mid])
min=max+1;
else if(key<arr[mid])
max=mid-1;
else
return mid;
}
return -1;
}
}
--------------------------------------------------------------------------
//求key插入有序数组的位置
class Demo16
{
public static void main(String args[])
{
int[] arr1={9,14,24,38,44,77,90};
Funcation a1=new Funcation();
System.out.println("index="+a1.getInsertIndex(arr1,91));
}
}
class Funcation
{
public int getInsertIndex(int[] arr,int key)
{
int min,max,mid;
min=0;
max=arr.length-1;
while(min<max)
{
mid=max+min;
if(arr[mid]<key)
min=mid+1;
else if(arr[mid]>key)
max=mid-1;
else
return mid;
}
return min;
}
}
---------------------------------------------------------------------------
//数组元素反向输出
/**
方法一:
class Demo17
{
public static void main(String args[])
{
int[] arr1={6,9,12,44,21};
Funcation a1=new Funcation();
a1.reverseArray(arr1);
}
}
class Funcation
{
public void reverseArray(int[] arr)
{
int k=arr.length-1-i;
for(int i=0;i<arr.length;i++)
{
System.out.print("arr["+i+"]="+arr[k]+" ");
}
}
}
*/
//方法二
class Demo17
{
public static void main(String args[])
{
int[] arr1={6,9,12,44,21};
Funcation a1=new Funcation();
a1.reverseArray(arr1);
a1.printArray(arr1);
}
}
class Funcation
{
public void reverseArray(int[] arr)
{
for(int start=0,end=arr.length-1;start<end;start++,end--)
{
swap(arr,start,end);
}
}
public void swap(int[] arr,int a,int b)
{
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
public void printArray(int[] arr)
{
for(int i=0;i<arr.length;i++)
{
System.out.print("arr["+i+"]="+arr[i]+" ");
}
}
}
----------------------------------------------------------
二维数组:
int[][] arr2=new int[3][];//二维数组
System.out.println(arr2);
//运行结果[I@b6e39f,将arr对应的数组转成了字符串并打印
//该字符串中包含的信息是:以@作为分隔符。左边是该实体的类型,
//[:代表数组, I:表示整数int.
//右边是该实体的哈希值(是实体在内存中的储存位置)。
System.out.println(arr2[0]);
//运行结果为null;