ArrayTools.java
//遍历数组,最大值,排序,二分查找
/**
<h1>ArrayTools操作数组的便捷类,包括对数组的排序,折半查找,遍历,求取最大值</h1>
@author 石松
@version 1.0
*/
public class ArrayTools
{
public ArrayTools(){}
/**
binarySearch方法实现了对数组的折半查找法,如果元素存在于数组中,
返回所在位置的角标,不在数组中,返回小于0的数
@param arr ,key 传递数组和需要查找的关键字
@return mid 所在数组的下标
*/
public static int binarySearch(int[] arr ,int key)
{
int min = 0;
int max = arr.length - 1;
int mid = 0;
while(min <= max)
{
mid = (min+max)/2;
if(key > arr[mid])
{
min = mid + 1;
}
else if(key < arr[mid])
{
max = mid - 1;
}
else
{
return mid;
}
}
return -1;
}
/**
select方法,对数组进行排序,次算法是一个经过优化的算法
@param arr 传递整型数组
*/
public static void select(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);
}
}
}
}
/**
数组换位的专用函数
*/
private static void swap(int[] arr , int x ,int y)
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
/**
getMax方法,获取数组中的最大值
@param arr 传递整型数组
@return max 最大值
*/
public static int getMax(int[] arr)
{
int max = 0;
for(int x = 1 ; x < arr.length ; x++)
{
if(arr[max] < arr[x])
{
max = x;
}
}
return arr[max];
}
/**
printArr方法,将数组打印在控制台上
@param 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("]");
}
}
TestArrayArray.java
package arraytools;
class TestArrayTools
{
public static void main(String[] args)
{
int[] arr ={3,2,56,78,23,723,65};
ArrayTools.printArr(arr);
ArrayTools.select(arr);
ArrayTools.getMax(arr);
ArrayTools.printArr(arr);
/* for (int x =0; x<args.length;x++ )
{
System.out.println(args[x]);
}*/
}
}
结果:
[3,2,56,78,23,723,65]
723
[2,3,23,56,65,78,723]