/**
建立一个对数组操作的工具类,其中包含了对数组操作的常见方法,如最值、排序等.
@author khq
@version V1.0
*/
public class ArrayClass
{
private ArrayClass(){}; //该类的所有方法都是静态的,不需要创建对象,为了避免其他程序创建该类对象,可以将该类的构造函数定义成私有的
/**
获取整型数组元素的最大值
@param arr 接收一个元素为int类型的数组
@return 返回该数组的最大值
*/
public static int getMax(int[] arr)
{
int maxIndex=0;
for(int x=0;x<arr.length;x++)
{
if(arr[x]>arr[maxIndex])
maxIndex=x;
}
return arr[maxIndex];
}
/**
给数组选择排序
@param arr 接收一个元素为int类型的数组
*/
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])
{
swap(arr,y,x);
}
}
}
}
/**
给数组冒泡排序
@param arr 接收一个元素为int类型的数组
*/
public static void bubbleSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=0;y<arr.length-1-x;y++)
{
if(arr[y]>arr[y+1])
swap(arr,y,y+1);
}
}
}
/**
二分法查找
@param arr 接收一个元素为int类型的数组
@param key 在数组中要查找的元素
@return 返回该元素所在的数组角标,若没有,则返回-1
*/
public static int binSearch(int[] arr,int key)
{
System.out.println("要查找的元素: "+key);
int max,min,mid;
min=0;
max=arr.length-1;
while(min<=max)
{
mid=(max+min)>>>1;
if(arr[mid]>key)
{
max=mid-1;
}
else if(arr[mid]<key)
{
min=mid+1;
}
else
return mid;
}
return -1; //return -mid-1;
}
/**
将int类型的数组元素转换为字符串
@param arr 接收一个元素为int类型的数组
*/
public static void arrayToString(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();
}
/**
交换数组中两个元素的值
@param arr 接收一个元素为int类型的数组
@param a,b 表示数组元素的两个角标
*/
public static void swap(int[] arr,int a,int b)
{
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
}
class ArrayClassDemo
{
public static void main(String[] args)
{
int[] arr={2,56,42,36,89,16,3,75,66,39};
System.out.println("显示数组元素: ");
ArrayClass.arrayToString(arr);
int max=ArrayClass.getMax(arr);
System.out.println("数组arr元素的最大值: "+max);
ArrayClass.bubbleSort(arr);
System.out.println("数组冒泡排序结果: ");
ArrayClass.arrayToString(arr);
//ArrayClass. selectSort(arr);
//System.out.println("数组选择排序结果: ");
//ArrayClass.arrayToString(arr);
int index=ArrayClass.binSearch(arr,16);
System.out.println("数组排序后,二分法查找该元素所在的数组角标: index="+index);
}
}
Java笔记二 之 数组工具类
最新推荐文章于 2023-08-10 20:52:30 发布