下面是本人自己学习的时候写的一下数组常用的操作方法!仅供参考
class ArrayTool
{
private ArrayTool(){}
//获取数组最大值
public static int getMax(int[] arr)
{
int max=0;
for (int x=1;x<arr.length ;x++ )
{
if (arr[x]>arr[max])
{
max=x;
}
}
return arr[max];
}
//获取数组最小值
public static int getMin(int[] arr)
{
int min=0;
for (int x=1;x<arr.length ;x++ )
{
if(arr[x]<arr[min])
min=x;
}
return arr[min];
}
//数组排序--选择排序--从小到大
public static void selectXZMin(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])
{
swap(arr,x,y);
}
}
}
}
//数组排序--选择排序--从大到小
public static void selectXZMax(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])
{
swap(arr,x,y);
}
}
}
}
//数组排序--冒泡排序--从小到大
public static void selectMPMin(int[] arr)
{
for (int x=0;x<arr.length ;x++ )
{
for (int y=0;y<arr.length-x-1 ;y++ )//-x:表示每次比较的时候元素都减少。-1:防止角标越界。
{
if (arr[y]>arr[y+1])
{
swap(arr,y,y+1);
}
}
}
}
//数组排序--冒泡排序--从大到小
public static void selectMPMax(int[] arr)
{
for (int x=0;x<arr.length ;x++ )
{
for (int y=0;y<arr.length-x-1 ;y++ )
{
if (arr[y]<arr[y+1])
{
swap(arr,y,y+1);
}
}
}
}
//交换值
private static void swap(int[] arr,int a,int b)
{
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
//打印数组
public static void print(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 int selectArray(int[] arr,int num)
{
int min,mid,max;
min=0;
max=arr.length-1;
mid=(min+max)/2;
while (num!=arr[mid])
{
if (num>arr[mid])
{
min=mid+1;
mid=(min+max)/2;
}
else if (num<arr[mid])
{
max=mid-1;
mid=(min+max)/2;
}
if (min>max)
{
return -1;
}
}
return mid;
}
public static int selectArr(int[] arr,int key)
{
for (int x=0;x<arr.length ;x++ )
{
if (key==arr[x])
{
return x;
}
}
return -1;
}
}
原创:转载请注明初出!谢谢合作!